{"_id":"@bevry/pluginloader","_rev":"65-6a6200b082dc54aa034f8c2ecd6125fa","name":"@bevry/pluginloader","dist-tags":{"latest":"5.3.0","next":"5.3.0-next.1703874887.55f5f04d37a37048c24d9f3f6c20677a44e67350"},"versions":{"1.0.0":{"name":"@bevry/pluginloader","version":"1.0.0","description":"A class for loading, verifying, and creating plugins. Used by DocPad for years.","homepage":"https://github.com/bevry/pluginloader","license":"MIT","keywords":["plugin","plugins","loader","bevry","docpad"],"badges":{"list":["travisci","npmversion","npmdownloads","daviddm","daviddmdev","---","patreon","opencollective","flattr","paypal","bitcoin","wishlist"],"config":{"patreonUsername":"bevry","opencollectiveUsername":"bevry","flattrUsername":"balupton","paypalURL":"https://bevry.me/paypal","bitcoinURL":"https://bevry.me/bitcoin","wishlistURL":"https://bevry.me/wishlist"}},"author":{"name":"2018+ Benjamin Lupton","email":"b@lupton.cc"},"maintainers":[{"name":"balupton","email":"b@lupton.cc"},{"name":"bevryme","email":"us@bevry.me"}],"contributors":[{"name":"Benjamin Lupton","url":"http://balupton.com"}],"bugs":{"url":"https://github.com/bevry/pluginloader/issues"},"repository":{"type":"git","url":"git+https://github.com/bevry/pluginloader.git"},"engines":{"node":">=0.10"},"editions":[{"description":"esnext source code with require for modules","directory":"source","entry":"index.js","syntaxes":["javascript","esnext","require"],"engines":{"node":">=6","browsers":false}},{"description":"esnext compiled for node.js >=0.10 with require for modules","directory":"edition-node-0.10","entry":"index.js","syntaxes":["javascript","require"],"engines":{"node":"0.10 || 0.12 || 4 || 6 || 8 || 10","browsers":false}}],"main":"index.js","dependencies":{"editions":"^2.0.2","errlop":"^1.0.3","safefs":"^4.1.0","semver":"^5.5.1"},"devDependencies":{"assert-helpers":"^4.5.1","babel-cli":"^6.26.0","babel-preset-env":"^1.7.0","documentation":"^8.1.2","eslint":"^5.5.0","joe":"^2.0.2","joe-reporter-console":"^2.0.2","projectz":"^1.4.0","surge":"^0.20.1","valid-directory":"^1.0.0"},"scripts":{"our:clean":"rm -Rf ./docs ./edition* ./es2015 ./es5 ./out","our:compile":"npm run our:compile:edition-node-0.10","our:compile:edition-node-0.10":"env BABEL_ENV=edition-node-0.10 babel --out-dir ./edition-node-0.10 ./source","our:deploy":"echo no need for this project","our:meta":"npm run our:meta:docs && npm run our:meta:projectz","our:meta:docs":"documentation build -f html -o ./docs -g --shallow ./source/**.js","our:meta:projectz":"projectz compile","our:release":"npm run our:release:prepare && npm run our:release:check-changelog && npm run our:release:check-dirty && npm run our:release:tag && npm run our:release:push","our:release:check-changelog":"cat ./HISTORY.md | grep v$npm_package_version || (echo add a changelog entry for v$npm_package_version && exit -1)","our:release:check-dirty":"git diff --exit-code","our:release:prepare":"npm run our:clean && npm run our:compile && npm run our:test && npm run our:meta","our:release:push":"git push origin master && git push origin --tags","our:release:tag":"export MESSAGE=$(cat ./HISTORY.md | sed -n \"/## v$npm_package_version/,/##/p\" | sed 's/## //' | awk 'NR>1{print buf}{buf = $0}') && test \"$MESSAGE\" || (echo 'proper changelog entry not found' && exit -1) && git tag v$npm_package_version -am \"$MESSAGE\"","our:setup":"npm run our:setup:npm","our:setup:npm":"npm install","our:test":"npm run our:verify && npm test","our:verify":"npm run our:verify:directory && npm run our:verify:eslint","our:verify:directory":"npx valid-directory","our:verify:eslint":"eslint --fix ./source","test":"node --harmony ./test.js --joe-reporter=console"},"babel":{"env":{"edition-node-0.10":{"presets":[["env",{"targets":{"node":"0.10"}}]]}}},"gitHead":"f5ca38433b6a37604048e8ae3be65d1e2e3c7b3e","_id":"@bevry/pluginloader@1.0.0","_npmVersion":"5.6.0","_nodeVersion":"8.11.4","_npmUser":{"name":"bevryme","email":"us@bevry.me"},"dist":{"integrity":"sha512-ZzSYr/mWpUIN9icvCSbVBJhwuPP5urMPZBx5HyhZorW3VRFlBb7QFm7Cqvkgo5/WwXssslb8qIlztkfsz0J5nw==","shasum":"829a3b5de06b2560784cb9bb16e97647e93f7255","tarball":"https://registry.npmjs.org/@bevry/pluginloader/-/pluginloader-1.0.0.tgz","fileCount":7,"unpackedSize":33238,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbjowJCRA9TVsSAnZWagAAZWwP/RGdv5CLmS/dHrlEZ0wq\nx4KIuRKFll0xOzP8uH9fot2LhBXv9bNph2szjE32nEqo/khTKj69a9QcEBbg\n4dSiE0rboaGY9lr7Um1TAgohkJd+sLbMAEFLBuGXQZSXpBovdia9dTFDTB44\nVqNJzzJiJdhmQizPn4F0c2e1XPwG13lQK4TB6GJub6PmhB7zcp39hFIzTcS5\nH+RfIsIrGF2HcpdzjCOpat27AxyGCilyNeS/wvIUZm0T2+3u44zBoJxDqjgF\n+HxFa5TtSCVmDfebgJFQx3aY/50VLBFKwF3vRvJ2zVzXccIdC0HccC7RTErm\nsin94UJ/FUR1i8vnub1fWh2CupbL/c5fcEpOVt7gS8nRgejy9z15z7JGEU1a\n/Gg1UIiAqvEsRVdAdSgHmzofV2c8WWIqnXyXhJEzAKKqzIf+WHWyROXhG4WO\nk5wUd6g07uQQu7qJkC1hUaqQhF746AsbfCZ89k33NGtPGxs7hkZ7JGy7va0W\nfLQT96MH5/rpEfve8wPOvo6nHzMPFfZcId0uTHBv/UKzaRJ3LeXS4lLxzSky\n9lNGvFZHZJed/wZ+h2Vc2T2TaZvSwz4RnTbZ7vIhPfvwRX5HORvVBUcBa8oV\nGF2Q3V3nsPRQht+c37cO7AGVq0HLpavXugfKwQXaovEV9JsLNlc+u6UHiMgC\nzQNU\r\n=1WyS\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC49eG+gxv5/9ezSKCc4QyTTyZ0iJdnz8vkXiXjVOSGPwIgWICRk4k+0xxB+kOybXEcMSbbV7Wo/f6Y9SPPtbBO0gM="}]},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/pluginloader_1.0.0_1536068616804_0.0033333605367340535"},"_hasShrinkwrap":false},"1.1.0":{"name":"@bevry/pluginloader","version":"1.1.0","description":"A class for loading, verifying, and creating plugins. Used by DocPad for years.","homepage":"https://github.com/bevry/pluginloader","license":"MIT","keywords":["plugin","plugins","loader","bevry","docpad"],"badges":{"list":["travisci","npmversion","npmdownloads","daviddm","daviddmdev","---","patreon","opencollective","flattr","paypal","bitcoin","wishlist"],"config":{"patreonUsername":"bevry","opencollectiveUsername":"bevry","flattrUsername":"balupton","paypalURL":"https://bevry.me/paypal","bitcoinURL":"https://bevry.me/bitcoin","wishlistURL":"https://bevry.me/wishlist"}},"author":{"name":"2018+ Benjamin Lupton","email":"b@lupton.cc"},"maintainers":[{"name":"balupton","email":"b@lupton.cc"},{"name":"bevryme","email":"us@bevry.me"}],"contributors":[{"name":"Benjamin Lupton","url":"http://balupton.com"}],"bugs":{"url":"https://github.com/bevry/pluginloader/issues"},"repository":{"type":"git","url":"git+https://github.com/bevry/pluginloader.git"},"engines":{"node":">=0.10"},"editions":[{"description":"esnext source code with require for modules","directory":"source","entry":"index.js","syntaxes":["javascript","esnext","require"],"engines":{"node":">=6","browsers":false}},{"description":"esnext compiled for node.js >=0.10 with require for modules","directory":"edition-node-0.10","entry":"index.js","syntaxes":["javascript","require"],"engines":{"node":"0.10 || 0.12 || 4 || 6 || 8 || 10","browsers":false}}],"main":"index.js","dependencies":{"editions":"^2.0.2","errlop":"^1.0.3","semver":"^5.5.1","typechecker":"^4.5.0"},"devDependencies":{"assert-helpers":"^4.5.1","babel-cli":"^6.26.0","babel-preset-env":"^1.7.0","documentation":"^8.1.2","eslint":"^5.5.0","joe":"^2.0.2","joe-reporter-console":"^2.0.2","projectz":"^1.4.0","surge":"^0.20.1","valid-directory":"^1.0.0"},"scripts":{"our:clean":"rm -Rf ./docs ./edition* ./es2015 ./es5 ./out","our:compile":"npm run our:compile:edition-node-0.10","our:compile:edition-node-0.10":"env BABEL_ENV=edition-node-0.10 babel --out-dir ./edition-node-0.10 ./source","our:deploy":"echo no need for this project","our:meta":"npm run our:meta:docs && npm run our:meta:projectz","our:meta:docs":"documentation build -f html -o ./docs -g --shallow ./source/**.js","our:meta:projectz":"projectz compile","our:release":"npm run our:release:prepare && npm run our:release:check-changelog && npm run our:release:check-dirty && npm run our:release:tag && npm run our:release:push","our:release:check-changelog":"cat ./HISTORY.md | grep v$npm_package_version || (echo add a changelog entry for v$npm_package_version && exit -1)","our:release:check-dirty":"git diff --exit-code","our:release:prepare":"npm run our:clean && npm run our:compile && npm run our:test && npm run our:meta","our:release:push":"git push origin master && git push origin --tags","our:release:tag":"export MESSAGE=$(cat ./HISTORY.md | sed -n \"/## v$npm_package_version/,/##/p\" | sed 's/## //' | awk 'NR>1{print buf}{buf = $0}') && test \"$MESSAGE\" || (echo 'proper changelog entry not found' && exit -1) && git tag v$npm_package_version -am \"$MESSAGE\"","our:setup":"npm run our:setup:npm","our:setup:npm":"npm install","our:test":"npm run our:verify && npm test","our:verify":"npm run our:verify:directory && npm run our:verify:eslint","our:verify:directory":"npx valid-directory","our:verify:eslint":"eslint --fix ./source","test":"node --harmony ./test.js --joe-reporter=console"},"babel":{"env":{"edition-node-0.10":{"presets":[["env",{"targets":{"node":"0.10"}}]]}}},"gitHead":"4b694a89683819427c8a9a03257d9570c3e7731a","_id":"@bevry/pluginloader@1.1.0","_npmVersion":"5.6.0","_nodeVersion":"8.11.4","_npmUser":{"name":"bevryme","email":"us@bevry.me"},"dist":{"integrity":"sha512-DHaMPkoO7YJeaFAPtzGFe5suM3rjBmo/JXJaWyiAJcDTqwg8PZevSl9n/Zc1ZZ4M1zpSow7xVXC59oEMlIreIA==","shasum":"2c21615f752806a7f88ba02aab2573cbc730649e","tarball":"https://registry.npmjs.org/@bevry/pluginloader/-/pluginloader-1.1.0.tgz","fileCount":7,"unpackedSize":32873,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbkvv4CRA9TVsSAnZWagAAXLsQAJ2KbUJz6bHGtJRbFDfP\naULT1fpmknDr+2ixVHk1raPKcGWicX2EZ83THYLYURZhiuNTtst4Op4wuT/+\nDG2/LrCwNR125GzHZMf7IqmffLm64Rt8qlfvqcbhACrGI8/1mN2aN3NI015/\nVNbqHcpuaexLsOo/y8oiBosK09QpbHb7UA2/l0S2j4no2WmSmG/tK3hUOkyS\nBM9CeqiPamFOYUFasQjPpcJXPamKwmiSdBBw65KhwwDI68TAjBTPIf3wYbLZ\nPQNJVNNx88nJsP5L5eyW4gDXMnZLj/TqLL4qyxq77IHOKmJaWTxjmo58aA/x\n4B4TmJ00J5BA/mZfc3ankoeP/RWtndlLYnJFa37uW1pqpIc46i3a6XALQN/z\n9ojlLFTvyWt7UjUQaP7Jvhd7tAEeF6sYCNMPL3IYYSS3qw0Ov4oBHYk5QTVX\nAAzT02PsamyOE1a5aYZd9OIwpNWViGzSn4BM+Y7rU3TDFAbguqEZLMLCMKcz\nrDXVr6Q1WsKqjPlg8N3Yxd0eFxb07STceouIPJuxGfKFbAT4g2JBychNA0ey\nY6xESFPiGzqtr8zeGw63Clrdj6qynPoDmmFtomdZtH+9uHZwsAl/VSARrhCC\nYiAOD0QBgf7cr+G3DPC1nQIYK9KTawIflns6/MgR8Klg69WBEKDUAoiLaJaD\nixhI\r\n=SaxM\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCZbS40uMNA98PebjPIcn3MyetvFlDt+AwT9xAB/+1uMwIgWZDl16zNrMvS7HR9/aLXo+YEpSO/HJjDaoFThB8xURg="}]},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/pluginloader_1.1.0_1536359415789_0.6139919133950664"},"_hasShrinkwrap":false},"1.1.1":{"name":"@bevry/pluginloader","version":"1.1.1","description":"A class for loading, verifying, and creating plugins. Used by DocPad for years.","homepage":"https://github.com/bevry/pluginloader","license":"MIT","keywords":["plugin","plugins","loader","bevry","docpad"],"badges":{"list":["travisci","npmversion","npmdownloads","daviddm","daviddmdev","---","patreon","opencollective","flattr","paypal","bitcoin","wishlist"],"config":{"patreonUsername":"bevry","opencollectiveUsername":"bevry","flattrUsername":"balupton","paypalURL":"https://bevry.me/paypal","bitcoinURL":"https://bevry.me/bitcoin","wishlistURL":"https://bevry.me/wishlist"}},"author":{"name":"2018+ Benjamin Lupton","email":"b@lupton.cc"},"maintainers":[{"name":"balupton","email":"b@lupton.cc"},{"name":"bevryme","email":"us@bevry.me"}],"contributors":[{"name":"Benjamin Lupton","url":"http://balupton.com"}],"bugs":{"url":"https://github.com/bevry/pluginloader/issues"},"repository":{"type":"git","url":"git+https://github.com/bevry/pluginloader.git"},"engines":{"node":">=0.10"},"editions":[{"description":"esnext source code with require for modules","directory":"source","entry":"index.js","syntaxes":["javascript","esnext","require"],"engines":{"node":">=6","browsers":false}},{"description":"esnext compiled for node.js >=0.10 with require for modules","directory":"edition-node-0.10","entry":"index.js","syntaxes":["javascript","require"],"engines":{"node":"0.10 || 0.12 || 4 || 6 || 8 || 10","browsers":false}}],"main":"index.js","dependencies":{"editions":"^2.0.2","errlop":"^1.0.3","semver":"^5.5.1","typechecker":"^4.6.0"},"devDependencies":{"assert-helpers":"^4.5.1","babel-cli":"^6.26.0","babel-preset-env":"^1.7.0","documentation":"^8.1.2","eslint":"^5.5.0","joe":"^2.0.2","joe-reporter-console":"^2.0.2","projectz":"^1.4.0","surge":"^0.20.1","valid-directory":"^1.0.0"},"scripts":{"our:clean":"rm -Rf ./docs ./edition* ./es2015 ./es5 ./out","our:compile":"npm run our:compile:edition-node-0.10","our:compile:edition-node-0.10":"env BABEL_ENV=edition-node-0.10 babel --out-dir ./edition-node-0.10 ./source","our:deploy":"echo no need for this project","our:meta":"npm run our:meta:docs && npm run our:meta:projectz","our:meta:docs":"documentation build -f html -o ./docs -g --shallow ./source/**.js","our:meta:projectz":"projectz compile","our:release":"npm run our:release:prepare && npm run our:release:check-changelog && npm run our:release:check-dirty && npm run our:release:tag && npm run our:release:push","our:release:check-changelog":"cat ./HISTORY.md | grep v$npm_package_version || (echo add a changelog entry for v$npm_package_version && exit -1)","our:release:check-dirty":"git diff --exit-code","our:release:prepare":"npm run our:clean && npm run our:compile && npm run our:test && npm run our:meta","our:release:push":"git push origin master && git push origin --tags","our:release:tag":"export MESSAGE=$(cat ./HISTORY.md | sed -n \"/## v$npm_package_version/,/##/p\" | sed 's/## //' | awk 'NR>1{print buf}{buf = $0}') && test \"$MESSAGE\" || (echo 'proper changelog entry not found' && exit -1) && git tag v$npm_package_version -am \"$MESSAGE\"","our:setup":"npm run our:setup:npm","our:setup:npm":"npm install","our:test":"npm run our:verify && npm test","our:verify":"npm run our:verify:directory && npm run our:verify:eslint","our:verify:directory":"npx valid-directory","our:verify:eslint":"eslint --fix ./source","test":"node --harmony ./test.js --joe-reporter=console"},"babel":{"env":{"edition-node-0.10":{"presets":[["env",{"targets":{"node":"0.10"}}]]}}},"gitHead":"948c76b9fdcc5fdf0c2625c391a3e0b4459dd82d","_id":"@bevry/pluginloader@1.1.1","_npmVersion":"5.6.0","_nodeVersion":"8.11.4","_npmUser":{"name":"bevryme","email":"us@bevry.me"},"dist":{"integrity":"sha512-92Rl+BNgDZKZapaFaCHzyCSOhRJpNdTKMbjT01XkBOXRzxvV5WswvwnEjFsWpg5ZMZaq9Ix/tAAiArYDqGWNzQ==","shasum":"72eb9fcf254a95fbc0db37d960779888023de1b6","tarball":"https://registry.npmjs.org/@bevry/pluginloader/-/pluginloader-1.1.1.tgz","fileCount":7,"unpackedSize":35660,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbk4ZoCRA9TVsSAnZWagAAV5oQAJnFLQai9wItNwh1Ve8l\ntClzLZ7+jYSBzOSa9i0KXMSyZIXi4yuIjdyrIaLacbB/EzrRPYqAyvdzsM3U\nPftek0rfKEv5Pg0lGPRuM3yw25On6CGRDmNqlrWYkxAnA4sSpqxAm9YK/SxW\n/QHXJFDiU/DHgMmdhwvhvW7uBYAtSi3lqePbaqlf1Wp9V4GcQNNZr9dogxv3\ntCE55RNrXkq0At5TRcX0zZDGpkJWGtKw7yqGUuZocq3beYxD+ZAAPDPxZ2aV\nwHTqOijWitGpuV38VTlVjqiHvBX2GqR2Hbr+rHQTvN6fWkXYv4w3unelf6ZM\nbq+xY+WawwK19jNgMr6USOTOEF2Fa909CP68ef0yVX6inaD9FmfnwWxLUKS2\n2a6eQNduj5Wi7jmjdqnlzTRV8A9fJp25Z/jddPDwOS+HYxbrNOAHfwJBeZvi\nEzGsNqzl73Mq87H8NqPuS/UqjbNBpuPaSprZXINtY+S3bQrFxnKjbhcKAUSV\nPEKNkpasUOzfoIj7rwtVRgC4RO3JbKGeULglwuCc8exe5RfKtxqLKj/e3G0O\nSYz7gIO4XRAyo2c4kqXoMxQ4xWQe8Yz93UWEkVDw1EYi99XMQJg6hwxTbjZ7\n4sbow9zDJJ2Y42L6YYU0RMwn9khIDiQPipByzXBivGMEW4SLISnJASaK7bqs\ncuzd\r\n=GiL7\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDLa3soaBv9wV5XDMHGx6lDB4BBmxoP1FXntL3j5AecLQIgWDTqDO4Y8QPsWGeJX3z/sOmSANdXuFOxrY0CGso8qRw="}]},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/pluginloader_1.1.1_1536394855704_0.9662656661611138"},"_hasShrinkwrap":false},"1.1.2":{"name":"@bevry/pluginloader","version":"1.1.2","description":"A class for loading, verifying, and creating plugins. Used by DocPad for years.","homepage":"https://github.com/bevry/pluginloader","license":"MIT","keywords":["plugin","plugins","loader","bevry","docpad"],"badges":{"list":["travisci","npmversion","npmdownloads","daviddm","daviddmdev","---","patreon","opencollective","flattr","paypal","bitcoin","wishlist"],"config":{"patreonUsername":"bevry","opencollectiveUsername":"bevry","flattrUsername":"balupton","paypalURL":"https://bevry.me/paypal","bitcoinURL":"https://bevry.me/bitcoin","wishlistURL":"https://bevry.me/wishlist"}},"author":{"name":"2018+ Benjamin Lupton","email":"b@lupton.cc"},"maintainers":[{"name":"balupton","email":"b@lupton.cc"},{"name":"bevryme","email":"us@bevry.me"}],"contributors":[{"name":"Benjamin Lupton","url":"http://balupton.com"}],"bugs":{"url":"https://github.com/bevry/pluginloader/issues"},"repository":{"type":"git","url":"git+https://github.com/bevry/pluginloader.git"},"engines":{"node":">=0.10"},"editions":[{"description":"esnext source code with require for modules","directory":"source","entry":"index.js","syntaxes":["javascript","esnext","require"],"engines":{"node":">=6","browsers":false}},{"description":"esnext compiled for node.js >=0.10 with require for modules","directory":"edition-node-0.10","entry":"index.js","syntaxes":["javascript","require"],"engines":{"node":"0.10 || 0.12 || 4 || 6 || 8 || 10","browsers":false}}],"main":"index.js","dependencies":{"editions":"^2.0.2","errlop":"^1.0.3","semver":"^5.5.1","typechecker":"^4.6.0"},"devDependencies":{"assert-helpers":"^4.5.1","babel-cli":"^6.26.0","babel-preset-env":"^1.7.0","documentation":"^8.1.2","eslint":"^5.5.0","joe":"^2.0.2","joe-reporter-console":"^2.0.2","projectz":"^1.4.0","surge":"^0.20.1","valid-directory":"^1.0.0"},"scripts":{"our:clean":"rm -Rf ./docs ./edition* ./es2015 ./es5 ./out","our:compile":"npm run our:compile:edition-node-0.10","our:compile:edition-node-0.10":"env BABEL_ENV=edition-node-0.10 babel --out-dir ./edition-node-0.10 ./source","our:deploy":"echo no need for this project","our:meta":"npm run our:meta:docs && npm run our:meta:projectz","our:meta:docs":"documentation build -f html -o ./docs -g --shallow ./source/**.js","our:meta:projectz":"projectz compile","our:release":"npm run our:release:prepare && npm run our:release:check-changelog && npm run our:release:check-dirty && npm run our:release:tag && npm run our:release:push","our:release:check-changelog":"cat ./HISTORY.md | grep v$npm_package_version || (echo add a changelog entry for v$npm_package_version && exit -1)","our:release:check-dirty":"git diff --exit-code","our:release:prepare":"npm run our:clean && npm run our:compile && npm run our:test && npm run our:meta","our:release:push":"git push origin master && git push origin --tags","our:release:tag":"export MESSAGE=$(cat ./HISTORY.md | sed -n \"/## v$npm_package_version/,/##/p\" | sed 's/## //' | awk 'NR>1{print buf}{buf = $0}') && test \"$MESSAGE\" || (echo 'proper changelog entry not found' && exit -1) && git tag v$npm_package_version -am \"$MESSAGE\"","our:setup":"npm run our:setup:npm","our:setup:npm":"npm install","our:test":"npm run our:verify && npm test","our:verify":"npm run our:verify:directory && npm run our:verify:eslint","our:verify:directory":"npx valid-directory","our:verify:eslint":"eslint --fix ./source","test":"node --harmony ./test.js --joe-reporter=console"},"babel":{"env":{"edition-node-0.10":{"presets":[["env",{"targets":{"node":"0.10"}}]]}}},"gitHead":"ecaa978982f311af3f271569c60c91442703cccb","_id":"@bevry/pluginloader@1.1.2","_npmVersion":"6.4.1","_nodeVersion":"8.12.0","_npmUser":{"name":"bevryme","email":"us@bevry.me"},"dist":{"integrity":"sha512-EgSMNx7HyalYXzuk+ciPKBv+OhgwJWnSjbDnDaxybjuysCKlLTMTLhHrR7pCDyakXHYi7XCq57SDxMpdo3WGAQ==","shasum":"7be6204781be4b7e59d0ea12ef589703d3b89304","tarball":"https://registry.npmjs.org/@bevry/pluginloader/-/pluginloader-1.1.2.tgz","fileCount":7,"unpackedSize":36172,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbsefRCRA9TVsSAnZWagAAD9kQAIUeRGkpW3HIDCXEL0qv\n0YMkcS7xrMfJcEdysNXqi7deGDe96wroXGyx+0RYpyQxW2qJHXgFpSVVBXm2\n3ikdqkZMTWEfxbiRaSs+qAh4bRiT13VJAXkAHUyuKXyNA9SY7ufWGnGzRjJQ\nJGrt+9tbAwl6YPLj8Nzt99d1frt0vV9spibOSple/qrKZFIJQBC6uocMLurc\nu+Bon1NeNlYWGxOH3pI9nmAx1jwwFeJ26LstSTUE/f0B8iS/0/KmrZK2P7+y\nlVKX9Pmba+YU+J3WOpn06ph7BuwKfKtgFjRtedvlreA+StbFd02kNSXBMJNe\nR0jh3ovWSADYgwZe44QDpNTdzxPKgK3vi7+Q82eYFUh5QPe7DFrpktU9ICTg\n0o/0RZ3gt8bd332zSc9V2TjP0hLxCToxA2Lh/JcJSalaEEM7vUc4DjhF61Ia\nFvl3SAmiM/zvVUvB4fQTe8zALl2PDM58MHGXWH2Dn4KByoAq1XJfFJLWlmw1\n/cVav/13NDyMd208EGmQzeCsBZ1GRRx1gK77Z7ZBkgUDyVwCDyeAvlgMzo0R\nFIztPq7FS5ZZc6wJIROzJ+PvAVqr7I1qcQGagyrH9KEbMYHIvAGRc6AGjD4E\ntCkWCmtwpvFDa05BGJxK2h9Y+BqWbNBcv4/N73tI4cfu1/H95w3iWzHkwsiM\nHjk6\r\n=cqmL\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDI2pb01x0f5BgdilwFyVkBMqRu+AxrUN7OVvLXqYPGSgIhAM0ptvDq/vgxqpiNaojdmP8KtGRETHgvXxw05cHiiYS9"}]},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/pluginloader_1.1.2_1538385872452_0.9370435250083342"},"_hasShrinkwrap":false},"2.0.0-next.1575664901.7925f80d5eaa90224f07ef037343cc7b3f2dfee7":{"name":"@bevry/pluginloader","version":"2.0.0-next.1575664901.7925f80d5eaa90224f07ef037343cc7b3f2dfee7","description":"A class for loading, verifying, and creating plugins. Used by DocPad for years.","homepage":"https://github.com/bevry/pluginloader","license":"MIT","keywords":["plugin","plugins","loader","bevry","docpad"],"badges":{"list":["travisci","npmversion","npmdownloads","daviddm","daviddmdev","---","githubsponsors","patreon","flattr","liberapay","buymeacoffee","opencollective","crypto","paypal","wishlist"],"config":{"githubSponsorsUsername":"balupton","buymeacoffeeUsername":"balupton","cryptoURL":"https://bevry.me/crypto","flattrUsername":"balupton","liberapayUsername":"bevry","opencollectiveUsername":"bevry","patreonUsername":"bevry","paypalURL":"https://bevry.me/paypal","wishlistURL":"https://bevry.me/wishlist","travisTLD":"com"}},"funding":"https://bevry.me/fund","author":{"name":"2018+ Benjamin Lupton","email":"b@lupton.cc"},"maintainers":[{"name":"balupton","email":"b@lupton.cc"},{"name":"bevryme","email":"us@bevry.me"}],"contributors":[{"name":"Benjamin Lupton","url":"http://balupton.com"}],"bugs":{"url":"https://github.com/bevry/pluginloader/issues"},"repository":{"type":"git","url":"git+https://github.com/bevry/pluginloader.git"},"engines":{"node":">=8"},"editions":[{"description":"typescript source code with import for modules","directory":"source","entry":"index.ts","tags":["typescript","import"],"engines":false},{"description":"typescript compiled for node.js 12 with require for modules","directory":"edition-node-12","entry":"index.js","tags":["javascript","require"],"engines":{"node":"8 || 10 || 12","browsers":false}}],"types":"source/index.ts","type":"commonjs","main":"edition-node-12/index.js","dependencies":{"errlop":"^1.6.0","semver":"^6.3.0","typechecker":"^6.2.0"},"devDependencies":{"@babel/cli":"^7.7.5","@babel/core":"^7.7.5","@babel/plugin-proposal-class-properties":"^7.7.4","@babel/plugin-proposal-object-rest-spread":"^7.7.4","@babel/plugin-proposal-optional-chaining":"^7.7.5","@babel/preset-env":"^7.7.5","@babel/preset-typescript":"^7.7.4","@typescript-eslint/eslint-plugin":"^2.10.0","@typescript-eslint/parser":"^2.10.0","assert-helpers":"^5.7.0","babel-plugin-add-module-exports":"^1.0.2","eslint":"^6.7.2","eslint-config-bevry":"^2.2.0","eslint-config-prettier":"^6.7.0","eslint-plugin-prettier":"^3.1.1","kava":"^4.3.0","prettier":"^1.19.1","projectz":"^1.15.0","surge":"^0.21.3","typedoc":"^0.15.3","typescript":"^3.7.3","valid-directory":"^1.5.0"},"scripts":{"our:clean":"rm -Rf ./docs ./edition* ./es2015 ./es5 ./out ./.next","our:compile":"npm run our:compile:edition-node-12","our:compile:edition-node-12":"env BABEL_ENV=edition-node-12 babel --extensions \".ts,.tsx\" --out-dir ./edition-node-12 ./source","our:deploy":"echo no need for this project","our:meta":"npm run our:meta:docs && npm run our:meta:projectz","our:meta:docs":"npm run our:meta:docs:typedoc","our:meta:docs:typedoc":"rm -Rf ./docs && typedoc --mode file --exclude '**/+(*test*|node_modules)' --excludeExternals --name \"$npm_package_name\" --readme ./README.md --out ./docs ./source","our:meta:projectz":"projectz compile","our:release":"npm run our:release:prepare && npm run our:release:check-changelog && npm run our:release:check-dirty && npm run our:release:tag && npm run our:release:push","our:release:check-changelog":"cat ./HISTORY.md | grep v$npm_package_version || (echo add a changelog entry for v$npm_package_version && exit -1)","our:release:check-dirty":"git diff --exit-code","our:release:prepare":"npm run our:clean && npm run our:compile && npm run our:test && npm run our:meta","our:release:push":"git push origin master && git push origin --tags","our:release:tag":"export MESSAGE=$(cat ./HISTORY.md | sed -n \"/## v$npm_package_version/,/##/p\" | sed 's/## //' | awk 'NR>1{print buf}{buf = $0}') && test \"$MESSAGE\" || (echo 'proper changelog entry not found' && exit -1) && git tag v$npm_package_version -am \"$MESSAGE\"","our:setup":"npm run our:setup:install","our:setup:install":"npm install","our:test":"npm run our:verify && npm test","our:verify":"npm run our:verify:directory && npm run our:verify:eslint && npm run our:verify:prettier && npm run our:verify:typescript","our:verify:directory":"npx valid-directory","our:verify:eslint":"eslint --fix --ignore-pattern '**/*.d.ts' --ignore-pattern '**/vendor/' --ignore-pattern '**/node_modules/' --ext .mjs,.js,.jsx,.ts,.tsx ./source","our:verify:prettier":"prettier --write ./source/**","our:verify:typescript":"tsc --noEmit --project tsconfig.json","test":"node ./edition-node-12/test.js"},"eslintConfig":{"extends":["bevry"]},"prettier":{"semi":false,"singleQuote":true},"babel":{"env":{"edition-node-12":{"sourceType":"module","presets":[["@babel/preset-env",{"targets":{"node":"12"},"modules":"commonjs"}],"@babel/preset-typescript"],"plugins":["@babel/proposal-object-rest-spread","@babel/plugin-proposal-optional-chaining","@babel/proposal-class-properties","add-module-exports"]}}},"gitHead":"7925f80d5eaa90224f07ef037343cc7b3f2dfee7","readme":"<!-- TITLE/ -->\n\n<h1>@bevry/pluginloader</h1>\n\n<!-- /TITLE -->\n\n\n<!-- BADGES/ -->\n\n<span class=\"badge-travisci\"><a href=\"http://travis-ci.com/bevry/pluginloader\" title=\"Check this project's build status on TravisCI\"><img src=\"https://img.shields.io/travis/com/bevry/pluginloader/master.svg\" alt=\"Travis CI Build Status\" /></a></span>\n<span class=\"badge-npmversion\"><a href=\"https://npmjs.org/package/@bevry/pluginloader\" title=\"View this project on NPM\"><img src=\"https://img.shields.io/npm/v/@bevry/pluginloader.svg\" alt=\"NPM version\" /></a></span>\n<span class=\"badge-npmdownloads\"><a href=\"https://npmjs.org/package/@bevry/pluginloader\" title=\"View this project on NPM\"><img src=\"https://img.shields.io/npm/dm/@bevry/pluginloader.svg\" alt=\"NPM downloads\" /></a></span>\n<span class=\"badge-daviddm\"><a href=\"https://david-dm.org/bevry/pluginloader\" title=\"View the status of this project's dependencies on DavidDM\"><img src=\"https://img.shields.io/david/bevry/pluginloader.svg\" alt=\"Dependency Status\" /></a></span>\n<span class=\"badge-daviddmdev\"><a href=\"https://david-dm.org/bevry/pluginloader#info=devDependencies\" title=\"View the status of this project's development dependencies on DavidDM\"><img src=\"https://img.shields.io/david/dev/bevry/pluginloader.svg\" alt=\"Dev Dependency Status\" /></a></span>\n<br class=\"badge-separator\" />\n<span class=\"badge-githubsponsors\"><a href=\"https://github.com/sponsors/balupton\" title=\"Donate to this project using GitHub Sponsors\"><img src=\"https://img.shields.io/badge/github-donate-yellow.svg\" alt=\"GitHub Sponsors donate button\" /></a></span>\n<span class=\"badge-patreon\"><a href=\"https://patreon.com/bevry\" title=\"Donate to this project using Patreon\"><img src=\"https://img.shields.io/badge/patreon-donate-yellow.svg\" alt=\"Patreon donate button\" /></a></span>\n<span class=\"badge-flattr\"><a href=\"https://flattr.com/profile/balupton\" title=\"Donate to this project using Flattr\"><img src=\"https://img.shields.io/badge/flattr-donate-yellow.svg\" alt=\"Flattr donate button\" /></a></span>\n<span class=\"badge-liberapay\"><a href=\"https://liberapay.com/bevry\" title=\"Donate to this project using Liberapay\"><img src=\"https://img.shields.io/badge/liberapay-donate-yellow.svg\" alt=\"Liberapay donate button\" /></a></span>\n<span class=\"badge-buymeacoffee\"><a href=\"https://buymeacoffee.com/balupton\" title=\"Donate to this project using Buy Me A Coffee\"><img src=\"https://img.shields.io/badge/buy%20me%20a%20coffee-donate-yellow.svg\" alt=\"Buy Me A Coffee donate button\" /></a></span>\n<span class=\"badge-opencollective\"><a href=\"https://opencollective.com/bevry\" title=\"Donate to this project using Open Collective\"><img src=\"https://img.shields.io/badge/open%20collective-donate-yellow.svg\" alt=\"Open Collective donate button\" /></a></span>\n<span class=\"badge-crypto\"><a href=\"https://bevry.me/crypto\" title=\"Donate to this project using Cryptocurrency\"><img src=\"https://img.shields.io/badge/crypto-donate-yellow.svg\" alt=\"crypto donate button\" /></a></span>\n<span class=\"badge-paypal\"><a href=\"https://bevry.me/paypal\" title=\"Donate to this project using Paypal\"><img src=\"https://img.shields.io/badge/paypal-donate-yellow.svg\" alt=\"PayPal donate button\" /></a></span>\n<span class=\"badge-wishlist\"><a href=\"https://bevry.me/wishlist\" title=\"Buy an item on our wishlist for us\"><img src=\"https://img.shields.io/badge/wishlist-donate-yellow.svg\" alt=\"Wishlist browse button\" /></a></span>\n\n<!-- /BADGES -->\n\n\n<!-- DESCRIPTION/ -->\n\nA class for loading, verifying, and creating plugins. Used by DocPad for years.\n\n<!-- /DESCRIPTION -->\n\n\n<!-- INSTALL/ -->\n\n<h2>Install</h2>\n\n<a href=\"https://npmjs.com\" title=\"npm is a package manager for javascript\"><h3>npm</h3></a>\n<ul>\n<li>Install: <code>npm install --save @bevry/pluginloader</code></li>\n<li>Require: <code>require('@bevry/pluginloader')</code></li>\n</ul>\n\n<h3><a href=\"https://editions.bevry.me\" title=\"Editions are the best way to produce and consume packages you care about.\">Editions</a></h3>\n\n<p>This package is published with the following editions:</p>\n\n<ul><li><code>@bevry/pluginloader/source/index.ts</code> is typescript source code with import for modules</li>\n<li><code>@bevry/pluginloader</code> aliases <code>@bevry/pluginloader/edition-node-12/index.js</code></li>\n<li><code>@bevry/pluginloader/edition-node-12/index.js</code> is typescript compiled for node.js 12 with require for modules</li></ul>\n\n<!-- /INSTALL -->\n\n\n## Usage\n\n[Complete API Documentation.](http://master.pluginloader.bevry.surge.sh/docs/)\n\n### Basics\n\nCreate your project:\n\n1. `mkdir my-project`\n1. `cd my-project`\n\nCreate your plugin:\n\n1. `mkdir myplugin`\n1. `cd myplugin`\n1. `npm init`\n1. `index.js` to:\n\n    ``` javascript\n    module.exports = function (BasePlugin) {\n        return class MyPlugin extends BasePlugin {\n            constructor (...args) {\n                super(...args)\n                console.log('hello from my plugin')\n            }\n        }\n    }\n    ```\n\n1. `cd ..`\n\nCreate your plugin loader:\n\n1. `mkdir myapp`\n1. `cd myapp`\n1. `npm init`\n1. `index.js` to:\n\n    ``` javascript\n    class BasePlugin {\n        constructor () {\n            console.log('hello from base plugin')\n        }\n    }\n    const PluginLoader = require('@bevry/pluginloader')\n    const pluginLoader = new PluginLoader({\n        BasePlugin,\n        pluginPath: require('path').resolve(__dirname, '..', 'myplugin')\n    })\n    ```\n\n1. `cd ..`\n\nRun the project:\n\n1. `node myapp/index.js`\n\n\n### Ecosystem\n\n- [pluginclerk](https://github.com/bevry/pluginclerk) a project for fetching compatible plugins from the npm registry\n- [docpad-baseplugin](https://github.com/docpad/docpad-baseplugin) the BasePlugin class that DocPad uses\n- [docpad-plugintester](https://github.com/docpad/docpad-plugintester) testing helpers for DocPad plugins\n\n\n<!-- HISTORY/ -->\n\n<h2>History</h2>\n\n<a href=\"https://github.com/bevry/pluginloader/blob/master/HISTORY.md#files\">Discover the release history by heading on over to the <code>HISTORY.md</code> file.</a>\n\n<!-- /HISTORY -->\n\n\n<!-- CONTRIBUTE/ -->\n\n<h2>Contribute</h2>\n\n<a href=\"https://github.com/bevry/pluginloader/blob/master/CONTRIBUTING.md#files\">Discover how you can contribute by heading on over to the <code>CONTRIBUTING.md</code> file.</a>\n\n<!-- /CONTRIBUTE -->\n\n\n<!-- BACKERS/ -->\n\n<h2>Backers</h2>\n\n<h3>Maintainers</h3>\n\nThese amazing people are maintaining this project:\n\n<ul><li>Benjamin Lupton</li></ul>\n\n<h3>Sponsors</h3>\n\nNo sponsors yet! Will you be the first?\n\n<span class=\"badge-githubsponsors\"><a href=\"https://github.com/sponsors/balupton\" title=\"Donate to this project using GitHub Sponsors\"><img src=\"https://img.shields.io/badge/github-donate-yellow.svg\" alt=\"GitHub Sponsors donate button\" /></a></span>\n<span class=\"badge-patreon\"><a href=\"https://patreon.com/bevry\" title=\"Donate to this project using Patreon\"><img src=\"https://img.shields.io/badge/patreon-donate-yellow.svg\" alt=\"Patreon donate button\" /></a></span>\n<span class=\"badge-flattr\"><a href=\"https://flattr.com/profile/balupton\" title=\"Donate to this project using Flattr\"><img src=\"https://img.shields.io/badge/flattr-donate-yellow.svg\" alt=\"Flattr donate button\" /></a></span>\n<span class=\"badge-liberapay\"><a href=\"https://liberapay.com/bevry\" title=\"Donate to this project using Liberapay\"><img src=\"https://img.shields.io/badge/liberapay-donate-yellow.svg\" alt=\"Liberapay donate button\" /></a></span>\n<span class=\"badge-buymeacoffee\"><a href=\"https://buymeacoffee.com/balupton\" title=\"Donate to this project using Buy Me A Coffee\"><img src=\"https://img.shields.io/badge/buy%20me%20a%20coffee-donate-yellow.svg\" alt=\"Buy Me A Coffee donate button\" /></a></span>\n<span class=\"badge-opencollective\"><a href=\"https://opencollective.com/bevry\" title=\"Donate to this project using Open Collective\"><img src=\"https://img.shields.io/badge/open%20collective-donate-yellow.svg\" alt=\"Open Collective donate button\" /></a></span>\n<span class=\"badge-crypto\"><a href=\"https://bevry.me/crypto\" title=\"Donate to this project using Cryptocurrency\"><img src=\"https://img.shields.io/badge/crypto-donate-yellow.svg\" alt=\"crypto donate button\" /></a></span>\n<span class=\"badge-paypal\"><a href=\"https://bevry.me/paypal\" title=\"Donate to this project using Paypal\"><img src=\"https://img.shields.io/badge/paypal-donate-yellow.svg\" alt=\"PayPal donate button\" /></a></span>\n<span class=\"badge-wishlist\"><a href=\"https://bevry.me/wishlist\" title=\"Buy an item on our wishlist for us\"><img src=\"https://img.shields.io/badge/wishlist-donate-yellow.svg\" alt=\"Wishlist browse button\" /></a></span>\n\n<h3>Contributors</h3>\n\nThese amazing people have contributed code to this project:\n\n<ul><li><a href=\"http://balupton.com\">Benjamin Lupton</a> — <a href=\"https://github.com/bevry/pluginloader/commits?author=balupton\" title=\"View the GitHub contributions of Benjamin Lupton on repository bevry/pluginloader\">view contributions</a></li></ul>\n\n<a href=\"https://github.com/bevry/pluginloader/blob/master/CONTRIBUTING.md#files\">Discover how you can contribute by heading on over to the <code>CONTRIBUTING.md</code> file.</a>\n\n<!-- /BACKERS -->\n\n\n<!-- LICENSE/ -->\n\n<h2>License</h2>\n\nUnless stated otherwise all works are:\n\n<ul><li>Copyright &copy; 2018+ Benjamin Lupton</li></ul>\n\nand licensed under:\n\n<ul><li><a href=\"http://spdx.org/licenses/MIT.html\">MIT License</a></li></ul>\n\n<!-- /LICENSE -->\n","readmeFilename":"README.md","_id":"@bevry/pluginloader@2.0.0-next.1575664901.7925f80d5eaa90224f07ef037343cc7b3f2dfee7","_nodeVersion":"12.13.1","_npmVersion":"6.12.1","dist":{"integrity":"sha512-IUANHRhgW9fcPCYS4hXke3882Oa/0e5YptiRa+63LVWsr0hB45GOVrTBoXkx7Apmg2LbZ8P/t7rRorOy4yfwew==","shasum":"b602df259b1928da49b90f0785668d6e55f9cb22","tarball":"https://registry.npmjs.org/@bevry/pluginloader/-/pluginloader-2.0.0-next.1575664901.7925f80d5eaa90224f07ef037343cc7b3f2dfee7.tgz","fileCount":9,"unpackedSize":38584,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJd6r0HCRA9TVsSAnZWagAAM3cQAIvhaiFu4EetsW1pfoR8\nkcciLws8hU3pXpwAE+o+hRaYkMAFkFOMXUDUCAA4jj+8rw6YDmKlkHjywiBy\nrxJG/SMacIe9kn1uyiJAPIQ651ADCxv93trBfSGfkaktecIy2npVQWRMakUH\nb4+5yrYXyEekxKpZqifqF42ibY1gBkXhVtkWaqhVNuH5HiINFmV4IuYJEgBO\nvZhcMd+vvQQKl3di5FMRFi5pXHqMlor7e/ebnkORzPif4pqNPJxnim+OT2/G\no92/SocGCyD5LKKpAAjI//MEjY6Uc4d5RvqrUnOERt+xk5xa+QzLt0kvHn2f\n/toFLAvPv68/L6CeGqDjO2JxQbBQE1prfMQxZOUMOY3hej7aMbIThxqRSxsy\nICjifPP77faQzymiSC43kOXDbzerfjpvzoy0hBMEb18sMy7B3W8wtW6ALBbN\nynUl3dW39uWpFXPGjxnBMGc1Ib4BblSShCOybUcgNHqJVJdeaaD95fUw8yuF\niJqS4Ov4MvXNAGRjesCv3JMY9++USSaoSHNuZaLeixDciphnR9Avk3dKs+E4\nl+zeVKEISF0VsJZKT3K0LdVwHtJCsf6BbW0Rlv2h4KZ7AOlIZqGkA9J4adh7\nUL6e26d16/7qiM8PD6VL0PiCdEWTDnIVjbDZ7m6Ly2M7Q7AKRVsbvoR3xucc\nxsFj\r\n=qJTu\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAyscNgrrO6mmDr4iKjXJrnlrx4FsGiScdPdvw4TUu+JAiEA1SZisp0X98YOrrSF0lfF9/+kMGu/1lo2zeZiCEli+Vg="}]},"_npmUser":{"name":"bevryme","email":"us@bevry.me"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/pluginloader_2.0.0-next.1575664901.7925f80d5eaa90224f07ef037343cc7b3f2dfee7_1575664903115_0.1508379474107311"},"_hasShrinkwrap":false},"2.0.0":{"name":"@bevry/pluginloader","version":"2.0.0","description":"A class for loading, verifying, and creating plugins. Used by DocPad for years.","homepage":"https://github.com/bevry/pluginloader","license":"MIT","keywords":["plugin","plugins","loader","bevry","docpad"],"badges":{"list":["travisci","npmversion","npmdownloads","daviddm","daviddmdev","---","githubsponsors","patreon","flattr","liberapay","buymeacoffee","opencollective","crypto","paypal","wishlist"],"config":{"githubSponsorsUsername":"balupton","buymeacoffeeUsername":"balupton","cryptoURL":"https://bevry.me/crypto","flattrUsername":"balupton","liberapayUsername":"bevry","opencollectiveUsername":"bevry","patreonUsername":"bevry","paypalURL":"https://bevry.me/paypal","wishlistURL":"https://bevry.me/wishlist","travisTLD":"com"}},"funding":"https://bevry.me/fund","author":{"name":"2018+ Benjamin Lupton","email":"b@lupton.cc"},"maintainers":[{"name":"balupton","email":"b@lupton.cc"},{"name":"bevryme","email":"us@bevry.me"}],"contributors":[{"name":"Benjamin Lupton","url":"http://balupton.com"}],"bugs":{"url":"https://github.com/bevry/pluginloader/issues"},"repository":{"type":"git","url":"git+https://github.com/bevry/pluginloader.git"},"engines":{"node":">=8"},"editions":[{"description":"typescript source code with import for modules","directory":"source","entry":"index.ts","tags":["typescript","import"],"engines":false},{"description":"typescript compiled for node.js 12 with require for modules","directory":"edition-node-12","entry":"index.js","tags":["javascript","require"],"engines":{"node":"8 || 10 || 12","browsers":false}}],"types":"source/index.ts","type":"commonjs","main":"edition-node-12/index.js","dependencies":{"errlop":"^1.6.0","semver":"^6.3.0","typechecker":"^6.2.0"},"devDependencies":{"@babel/cli":"^7.7.5","@babel/core":"^7.7.5","@babel/plugin-proposal-class-properties":"^7.7.4","@babel/plugin-proposal-object-rest-spread":"^7.7.4","@babel/plugin-proposal-optional-chaining":"^7.7.5","@babel/preset-env":"^7.7.5","@babel/preset-typescript":"^7.7.4","@typescript-eslint/eslint-plugin":"^2.10.0","@typescript-eslint/parser":"^2.10.0","assert-helpers":"^5.7.0","babel-plugin-add-module-exports":"^1.0.2","eslint":"^6.7.2","eslint-config-bevry":"^2.2.0","eslint-config-prettier":"^6.7.0","eslint-plugin-prettier":"^3.1.1","kava":"^4.3.0","prettier":"^1.19.1","projectz":"^1.15.0","surge":"^0.21.3","typedoc":"^0.15.3","typescript":"^3.7.3","valid-directory":"^1.5.0"},"scripts":{"our:clean":"rm -Rf ./docs ./edition* ./es2015 ./es5 ./out ./.next","our:compile":"npm run our:compile:edition-node-12","our:compile:edition-node-12":"env BABEL_ENV=edition-node-12 babel --extensions \".ts,.tsx\" --out-dir ./edition-node-12 ./source","our:deploy":"echo no need for this project","our:meta":"npm run our:meta:docs && npm run our:meta:projectz","our:meta:docs":"npm run our:meta:docs:typedoc","our:meta:docs:typedoc":"rm -Rf ./docs && typedoc --mode file --exclude '**/+(*test*|node_modules)' --excludeExternals --name \"$npm_package_name\" --readme ./README.md --out ./docs ./source","our:meta:projectz":"projectz compile","our:release":"npm run our:release:prepare && npm run our:release:check-changelog && npm run our:release:check-dirty && npm run our:release:tag && npm run our:release:push","our:release:check-changelog":"cat ./HISTORY.md | grep v$npm_package_version || (echo add a changelog entry for v$npm_package_version && exit -1)","our:release:check-dirty":"git diff --exit-code","our:release:prepare":"npm run our:clean && npm run our:compile && npm run our:test && npm run our:meta","our:release:push":"git push origin master && git push origin --tags","our:release:tag":"export MESSAGE=$(cat ./HISTORY.md | sed -n \"/## v$npm_package_version/,/##/p\" | sed 's/## //' | awk 'NR>1{print buf}{buf = $0}') && test \"$MESSAGE\" || (echo 'proper changelog entry not found' && exit -1) && git tag v$npm_package_version -am \"$MESSAGE\"","our:setup":"npm run our:setup:install","our:setup:install":"npm install","our:test":"npm run our:verify && npm test","our:verify":"npm run our:verify:directory && npm run our:verify:eslint && npm run our:verify:prettier && npm run our:verify:typescript","our:verify:directory":"npx valid-directory","our:verify:eslint":"eslint --fix --ignore-pattern '**/*.d.ts' --ignore-pattern '**/vendor/' --ignore-pattern '**/node_modules/' --ext .mjs,.js,.jsx,.ts,.tsx ./source","our:verify:prettier":"prettier --write ./source/**","our:verify:typescript":"tsc --noEmit --project tsconfig.json","test":"node ./edition-node-12/test.js"},"eslintConfig":{"extends":["bevry"]},"prettier":{"semi":false,"singleQuote":true},"babel":{"env":{"edition-node-12":{"sourceType":"module","presets":[["@babel/preset-env",{"targets":{"node":"12"},"modules":"commonjs"}],"@babel/preset-typescript"],"plugins":["@babel/proposal-object-rest-spread","@babel/plugin-proposal-optional-chaining","@babel/proposal-class-properties","add-module-exports"]}}},"gitHead":"7925f80d5eaa90224f07ef037343cc7b3f2dfee7","_id":"@bevry/pluginloader@2.0.0","_nodeVersion":"12.13.1","_npmVersion":"6.12.1","dist":{"integrity":"sha512-BYhLdi2iZYwvQNQvvG4tHpw37cZ2vtt7s8orxrOWREAJX4tMra4TWG4liYK8LLyOqdV6BR6x0hk8jMMIlD8/HA==","shasum":"396c41930e378ebe68c2e54f8c49d2f0602211d7","tarball":"https://registry.npmjs.org/@bevry/pluginloader/-/pluginloader-2.0.0.tgz","fileCount":9,"unpackedSize":38527,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJd6r1GCRA9TVsSAnZWagAAdToP/jbrcHEa6jPwEc0PADNf\nBzjOcN1mtiz0/7OcQQU/yfcAttwnW0juoYQNjlwfB3pSLkijAR+lsno2HzxZ\n3qnXXDffH2wI+t0x7kbmIyPhUcxk6LMshKaqOkE9j4Cv1VBSVHxEpJoiIE79\nha2hTOx2TJjO5xMEXF2Wgf8n8410bI0NflU05yQNPZVJyA/XPgLyQaqecFqi\nDHWJTPtlAULlHm4JQ+/oWE5h99cI5ThkoBd4bFuuBHR579oaqlTUHswvXPOH\ntpUHYAtRIBdMOy+87yiDF4/P4F8+rb54iMPbt7vcFgqQpBN06gvfdZNy1ul3\nMaPKr7Zs3ouduFTAnATbSAn+Rql3f1/SAlPB74LBE3r1IZkUB3SyOw8Ev25D\n0m/iUzq/teXoJ2hB8iNuL1C/m/oB5wJ6ijcME2YJQyz2tDXX8YAHTvAIymVn\nBQCdGGLQ9LYe4D/CSEXpRoiNmNZdNQYr5oMXzTALpIM52H4WldB0L6UtwAMM\ne1oU5H5n+bKz5jGr1oqXSnFskzfxYBIGDxs+bFKOkLVNcrySlwQ7PVC/xXJL\nQ/ebOzhmcdovWY+o/CdPLX2f+dFbCK7aN1VBtarMewiQ3jpsAWvOYST3sWFg\no35rwc60WMlOEzxr5mDo6y/SzreUZ0JzVpRNq4TNoUzLj4AnoaadVFfrc5Gw\ngA+e\r\n=sSPw\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIAel/E00hhUs+v7hkEkXR7F3IXVRO+z1503z2x7RKDHBAiAZMU+od+EtmXMK5RFbsU1IunxGChE+U2ZKU/wPqfNsMg=="}]},"_npmUser":{"name":"bevryme","email":"us@bevry.me"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/pluginloader_2.0.0_1575664966460_0.3143418340113868"},"_hasShrinkwrap":false},"2.1.0":{"name":"@bevry/pluginloader","version":"2.1.0","description":"A class for loading, verifying, and creating plugins. Used by DocPad for years.","homepage":"https://github.com/bevry/pluginloader","license":"MIT","keywords":["plugin","plugins","loader","bevry","docpad"],"badges":{"list":["travisci","npmversion","npmdownloads","daviddm","daviddmdev","---","githubsponsors","patreon","flattr","liberapay","buymeacoffee","opencollective","crypto","paypal","wishlist"],"config":{"githubSponsorsUsername":"balupton","buymeacoffeeUsername":"balupton","cryptoURL":"https://bevry.me/crypto","flattrUsername":"balupton","liberapayUsername":"bevry","opencollectiveUsername":"bevry","patreonUsername":"bevry","paypalURL":"https://bevry.me/paypal","wishlistURL":"https://bevry.me/wishlist","travisTLD":"com"}},"funding":"https://bevry.me/fund","author":{"name":"2018+ Benjamin Lupton","email":"b@lupton.cc"},"maintainers":[{"name":"balupton","email":"b@lupton.cc"},{"name":"bevryme","email":"us@bevry.me"}],"contributors":[{"name":"Benjamin Lupton","url":"http://balupton.com"}],"bugs":{"url":"https://github.com/bevry/pluginloader/issues"},"repository":{"type":"git","url":"git+https://github.com/bevry/pluginloader.git"},"engines":{"node":">=8"},"editions":[{"description":"typescript source code with import for modules","directory":"source","entry":"index.ts","tags":["typescript","import"],"engines":false},{"description":"typescript compiled for node.js 12 with require for modules","directory":"edition-node-12","entry":"index.js","tags":["javascript","require"],"engines":{"node":"8 || 10 || 12","browsers":false}}],"types":"source/index.ts","type":"commonjs","main":"edition-node-12/index.js","dependencies":{"errlop":"^1.7.0","semver":"^6.3.0","typechecker":"^6.2.0"},"devDependencies":{"@babel/cli":"^7.7.5","@babel/core":"^7.7.5","@babel/plugin-proposal-class-properties":"^7.7.4","@babel/plugin-proposal-object-rest-spread":"^7.7.4","@babel/plugin-proposal-optional-chaining":"^7.7.5","@babel/preset-env":"^7.7.6","@babel/preset-typescript":"^7.7.4","@typescript-eslint/eslint-plugin":"^2.11.0","@typescript-eslint/parser":"^2.11.0","assert-helpers":"^5.8.0","babel-plugin-add-module-exports":"^1.0.2","eslint":"^6.7.2","eslint-config-bevry":"^2.3.0","eslint-config-prettier":"^6.7.0","eslint-plugin-prettier":"^3.1.1","kava":"^4.4.0","prettier":"^1.19.1","projectz":"^1.15.0","surge":"^0.21.3","typedoc":"^0.15.4","typescript":"^3.7.3","valid-directory":"^1.5.0"},"scripts":{"our:clean":"rm -Rf ./docs ./edition* ./es2015 ./es5 ./out ./.next","our:compile":"npm run our:compile:edition-node-12","our:compile:edition-node-12":"env BABEL_ENV=edition-node-12 babel --extensions \".ts,.tsx\" --out-dir ./edition-node-12 ./source","our:deploy":"echo no need for this project","our:meta":"npm run our:meta:docs && npm run our:meta:projectz","our:meta:docs":"npm run our:meta:docs:typedoc","our:meta:docs:typedoc":"rm -Rf ./docs && typedoc --mode file --exclude '**/+(*test*|node_modules)' --excludeExternals --name \"$npm_package_name\" --readme ./README.md --out ./docs ./source","our:meta:projectz":"projectz compile","our:release":"npm run our:release:prepare && npm run our:release:check-changelog && npm run our:release:check-dirty && npm run our:release:tag && npm run our:release:push","our:release:check-changelog":"cat ./HISTORY.md | grep v$npm_package_version || (echo add a changelog entry for v$npm_package_version && exit -1)","our:release:check-dirty":"git diff --exit-code","our:release:prepare":"npm run our:clean && npm run our:compile && npm run our:test && npm run our:meta","our:release:push":"git push origin master && git push origin --tags","our:release:tag":"export MESSAGE=$(cat ./HISTORY.md | sed -n \"/## v$npm_package_version/,/##/p\" | sed 's/## //' | awk 'NR>1{print buf}{buf = $0}') && test \"$MESSAGE\" || (echo 'proper changelog entry not found' && exit -1) && git tag v$npm_package_version -am \"$MESSAGE\"","our:setup":"npm run our:setup:install","our:setup:install":"npm install","our:test":"npm run our:verify && npm test","our:verify":"npm run our:verify:directory && npm run our:verify:eslint && npm run our:verify:prettier && npm run our:verify:typescript","our:verify:directory":"npx valid-directory","our:verify:eslint":"eslint --fix --ignore-pattern '**/*.d.ts' --ignore-pattern '**/vendor/' --ignore-pattern '**/node_modules/' --ext .mjs,.js,.jsx,.ts,.tsx ./source","our:verify:prettier":"prettier --write ./source/**","our:verify:typescript":"tsc --noEmit --project tsconfig.json","test":"node ./edition-node-12/test.js"},"eslintConfig":{"extends":["bevry"]},"prettier":{"semi":false,"singleQuote":true},"babel":{"env":{"edition-node-12":{"sourceType":"module","presets":[["@babel/preset-env",{"targets":{"node":"12"},"modules":"commonjs"}],"@babel/preset-typescript"],"plugins":["@babel/proposal-object-rest-spread","@babel/plugin-proposal-optional-chaining","@babel/proposal-class-properties","add-module-exports"]}}},"gitHead":"60421211a2add43d06b9eff5d7e964ed6674d728","_id":"@bevry/pluginloader@2.1.0","_nodeVersion":"12.13.1","_npmVersion":"6.12.1","dist":{"integrity":"sha512-5TpzBZawadaP+ud9Z2S527VXSvqfpDenavGDiJeJMVS2ogVf9NLt74X/zFMbTwH8nZy5JOYqkFb1u9ZN471xmw==","shasum":"631115ea48ef560bef72739b38dc6a93cb7b6c13","tarball":"https://registry.npmjs.org/@bevry/pluginloader/-/pluginloader-2.1.0.tgz","fileCount":9,"unpackedSize":38780,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJd7pbTCRA9TVsSAnZWagAABXwQAJ3g/f30X06kLCYiZQda\nsCtOm9VT0cXgQE8F+HFE3vPsMnr+8wtARS7LYZrEw+pt0+llHrxWkorLtCir\nFfJVdhSo4e0SxQIVxZAVHgGGG4kllpoBFg5g4S+LcP4oMaHZNRlPMbx/mVDG\nlucXEFNLVFE6YnjlXsUxRbcQ93Nog1P3CotiD11BvIJNKWNS6U9dXtY3tBrP\nTO0eGb9mEwXOl9jVemPG/krmpRcedqkpp7hSdPd/V+1KJxsCZ4z9fCxUUDcs\ndjIfdBN2RH+tSsq7ys1gUE6stPU7bUaftvbJyR2AxGcqSvoTzMTO+OsyLYqr\noWnO3VoebMpK9v5T0N4iRKPmIlNs1b8DuAKPjkftLCiRmLNj0D7XIRZ6M66P\nvbhHulhLd98A8x7p42AON0p1usRUhhGI1bYsP5WgSQnPeRQX6F3gKCGKaj3M\n5l0hY+Szf6s69vUxbZNUIF0v0fzXksetktOOwzL9gQocxQlKfUkTSMCqvixA\n1iifvPXTOP4vUaX027t5VguF6RDEf6Pc7+FO9oiupKh+IPo2RQISBzFp3QcH\nnvs2Vh9k47Xj8ZG1ElB97PhvGvMcBy0gww8ysxQxqOSCDL+LJMUWGhRoRooE\ndvzL11+fpaFu8ybTobobxGhF1QwMW7GKOzhjTHX7S0f+fEGH7apJdVvbRFOZ\nsVfG\r\n=Cv+G\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDelQ+n0LLJeXQeB43rAIutgsiI5EGIOSOk+gcP/LfFhwIhAOi7j0Q0VbYABmc2OYfP0y5TXJ7lTvIOrx1qpW1NZwm/"}]},"_npmUser":{"name":"bevryme","email":"us@bevry.me"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/pluginloader_2.1.0_1575917267092_0.624205086053103"},"_hasShrinkwrap":false},"2.1.0-next.1575917292.60421211a2add43d06b9eff5d7e964ed6674d728":{"name":"@bevry/pluginloader","version":"2.1.0-next.1575917292.60421211a2add43d06b9eff5d7e964ed6674d728","description":"A class for loading, verifying, and creating plugins. Used by DocPad for years.","homepage":"https://github.com/bevry/pluginloader","license":"MIT","keywords":["plugin","plugins","loader","bevry","docpad"],"badges":{"list":["travisci","npmversion","npmdownloads","daviddm","daviddmdev","---","githubsponsors","patreon","flattr","liberapay","buymeacoffee","opencollective","crypto","paypal","wishlist"],"config":{"githubSponsorsUsername":"balupton","buymeacoffeeUsername":"balupton","cryptoURL":"https://bevry.me/crypto","flattrUsername":"balupton","liberapayUsername":"bevry","opencollectiveUsername":"bevry","patreonUsername":"bevry","paypalURL":"https://bevry.me/paypal","wishlistURL":"https://bevry.me/wishlist","travisTLD":"com"}},"funding":"https://bevry.me/fund","author":{"name":"2018+ Benjamin Lupton","email":"b@lupton.cc"},"maintainers":[{"name":"balupton","email":"b@lupton.cc"},{"name":"bevryme","email":"us@bevry.me"}],"contributors":[{"name":"Benjamin Lupton","url":"http://balupton.com"}],"bugs":{"url":"https://github.com/bevry/pluginloader/issues"},"repository":{"type":"git","url":"git+https://github.com/bevry/pluginloader.git"},"engines":{"node":">=8"},"editions":[{"description":"typescript source code with import for modules","directory":"source","entry":"index.ts","tags":["typescript","import"],"engines":false},{"description":"typescript compiled for node.js 12 with require for modules","directory":"edition-node-12","entry":"index.js","tags":["javascript","require"],"engines":{"node":"8 || 10 || 12","browsers":false}}],"types":"source/index.ts","type":"commonjs","main":"edition-node-12/index.js","dependencies":{"errlop":"^1.7.0","semver":"^6.3.0","typechecker":"^6.2.0"},"devDependencies":{"@babel/cli":"^7.7.5","@babel/core":"^7.7.5","@babel/plugin-proposal-class-properties":"^7.7.4","@babel/plugin-proposal-object-rest-spread":"^7.7.4","@babel/plugin-proposal-optional-chaining":"^7.7.5","@babel/preset-env":"^7.7.6","@babel/preset-typescript":"^7.7.4","@typescript-eslint/eslint-plugin":"^2.11.0","@typescript-eslint/parser":"^2.11.0","assert-helpers":"^5.8.0","babel-plugin-add-module-exports":"^1.0.2","eslint":"^6.7.2","eslint-config-bevry":"^2.3.0","eslint-config-prettier":"^6.7.0","eslint-plugin-prettier":"^3.1.1","kava":"^4.4.0","prettier":"^1.19.1","projectz":"^1.15.0","surge":"^0.21.3","typedoc":"^0.15.4","typescript":"^3.7.3","valid-directory":"^1.5.0"},"scripts":{"our:clean":"rm -Rf ./docs ./edition* ./es2015 ./es5 ./out ./.next","our:compile":"npm run our:compile:edition-node-12","our:compile:edition-node-12":"env BABEL_ENV=edition-node-12 babel --extensions \".ts,.tsx\" --out-dir ./edition-node-12 ./source","our:deploy":"echo no need for this project","our:meta":"npm run our:meta:docs && npm run our:meta:projectz","our:meta:docs":"npm run our:meta:docs:typedoc","our:meta:docs:typedoc":"rm -Rf ./docs && typedoc --mode file --exclude '**/+(*test*|node_modules)' --excludeExternals --name \"$npm_package_name\" --readme ./README.md --out ./docs ./source","our:meta:projectz":"projectz compile","our:release":"npm run our:release:prepare && npm run our:release:check-changelog && npm run our:release:check-dirty && npm run our:release:tag && npm run our:release:push","our:release:check-changelog":"cat ./HISTORY.md | grep v$npm_package_version || (echo add a changelog entry for v$npm_package_version && exit -1)","our:release:check-dirty":"git diff --exit-code","our:release:prepare":"npm run our:clean && npm run our:compile && npm run our:test && npm run our:meta","our:release:push":"git push origin master && git push origin --tags","our:release:tag":"export MESSAGE=$(cat ./HISTORY.md | sed -n \"/## v$npm_package_version/,/##/p\" | sed 's/## //' | awk 'NR>1{print buf}{buf = $0}') && test \"$MESSAGE\" || (echo 'proper changelog entry not found' && exit -1) && git tag v$npm_package_version -am \"$MESSAGE\"","our:setup":"npm run our:setup:install","our:setup:install":"npm install","our:test":"npm run our:verify && npm test","our:verify":"npm run our:verify:directory && npm run our:verify:eslint && npm run our:verify:prettier && npm run our:verify:typescript","our:verify:directory":"npx valid-directory","our:verify:eslint":"eslint --fix --ignore-pattern '**/*.d.ts' --ignore-pattern '**/vendor/' --ignore-pattern '**/node_modules/' --ext .mjs,.js,.jsx,.ts,.tsx ./source","our:verify:prettier":"prettier --write ./source/**","our:verify:typescript":"tsc --noEmit --project tsconfig.json","test":"node ./edition-node-12/test.js"},"eslintConfig":{"extends":["bevry"]},"prettier":{"semi":false,"singleQuote":true},"babel":{"env":{"edition-node-12":{"sourceType":"module","presets":[["@babel/preset-env",{"targets":{"node":"12"},"modules":"commonjs"}],"@babel/preset-typescript"],"plugins":["@babel/proposal-object-rest-spread","@babel/plugin-proposal-optional-chaining","@babel/proposal-class-properties","add-module-exports"]}}},"gitHead":"60421211a2add43d06b9eff5d7e964ed6674d728","readme":"<!-- TITLE/ -->\n\n<h1>@bevry/pluginloader</h1>\n\n<!-- /TITLE -->\n\n\n<!-- BADGES/ -->\n\n<span class=\"badge-travisci\"><a href=\"http://travis-ci.com/bevry/pluginloader\" title=\"Check this project's build status on TravisCI\"><img src=\"https://img.shields.io/travis/com/bevry/pluginloader/master.svg\" alt=\"Travis CI Build Status\" /></a></span>\n<span class=\"badge-npmversion\"><a href=\"https://npmjs.org/package/@bevry/pluginloader\" title=\"View this project on NPM\"><img src=\"https://img.shields.io/npm/v/@bevry/pluginloader.svg\" alt=\"NPM version\" /></a></span>\n<span class=\"badge-npmdownloads\"><a href=\"https://npmjs.org/package/@bevry/pluginloader\" title=\"View this project on NPM\"><img src=\"https://img.shields.io/npm/dm/@bevry/pluginloader.svg\" alt=\"NPM downloads\" /></a></span>\n<span class=\"badge-daviddm\"><a href=\"https://david-dm.org/bevry/pluginloader\" title=\"View the status of this project's dependencies on DavidDM\"><img src=\"https://img.shields.io/david/bevry/pluginloader.svg\" alt=\"Dependency Status\" /></a></span>\n<span class=\"badge-daviddmdev\"><a href=\"https://david-dm.org/bevry/pluginloader#info=devDependencies\" title=\"View the status of this project's development dependencies on DavidDM\"><img src=\"https://img.shields.io/david/dev/bevry/pluginloader.svg\" alt=\"Dev Dependency Status\" /></a></span>\n<br class=\"badge-separator\" />\n<span class=\"badge-githubsponsors\"><a href=\"https://github.com/sponsors/balupton\" title=\"Donate to this project using GitHub Sponsors\"><img src=\"https://img.shields.io/badge/github-donate-yellow.svg\" alt=\"GitHub Sponsors donate button\" /></a></span>\n<span class=\"badge-patreon\"><a href=\"https://patreon.com/bevry\" title=\"Donate to this project using Patreon\"><img src=\"https://img.shields.io/badge/patreon-donate-yellow.svg\" alt=\"Patreon donate button\" /></a></span>\n<span class=\"badge-flattr\"><a href=\"https://flattr.com/profile/balupton\" title=\"Donate to this project using Flattr\"><img src=\"https://img.shields.io/badge/flattr-donate-yellow.svg\" alt=\"Flattr donate button\" /></a></span>\n<span class=\"badge-liberapay\"><a href=\"https://liberapay.com/bevry\" title=\"Donate to this project using Liberapay\"><img src=\"https://img.shields.io/badge/liberapay-donate-yellow.svg\" alt=\"Liberapay donate button\" /></a></span>\n<span class=\"badge-buymeacoffee\"><a href=\"https://buymeacoffee.com/balupton\" title=\"Donate to this project using Buy Me A Coffee\"><img src=\"https://img.shields.io/badge/buy%20me%20a%20coffee-donate-yellow.svg\" alt=\"Buy Me A Coffee donate button\" /></a></span>\n<span class=\"badge-opencollective\"><a href=\"https://opencollective.com/bevry\" title=\"Donate to this project using Open Collective\"><img src=\"https://img.shields.io/badge/open%20collective-donate-yellow.svg\" alt=\"Open Collective donate button\" /></a></span>\n<span class=\"badge-crypto\"><a href=\"https://bevry.me/crypto\" title=\"Donate to this project using Cryptocurrency\"><img src=\"https://img.shields.io/badge/crypto-donate-yellow.svg\" alt=\"crypto donate button\" /></a></span>\n<span class=\"badge-paypal\"><a href=\"https://bevry.me/paypal\" title=\"Donate to this project using Paypal\"><img src=\"https://img.shields.io/badge/paypal-donate-yellow.svg\" alt=\"PayPal donate button\" /></a></span>\n<span class=\"badge-wishlist\"><a href=\"https://bevry.me/wishlist\" title=\"Buy an item on our wishlist for us\"><img src=\"https://img.shields.io/badge/wishlist-donate-yellow.svg\" alt=\"Wishlist browse button\" /></a></span>\n\n<!-- /BADGES -->\n\n\n<!-- DESCRIPTION/ -->\n\nA class for loading, verifying, and creating plugins. Used by DocPad for years.\n\n<!-- /DESCRIPTION -->\n\n\n<!-- INSTALL/ -->\n\n<h2>Install</h2>\n\n<a href=\"https://npmjs.com\" title=\"npm is a package manager for javascript\"><h3>npm</h3></a>\n<ul>\n<li>Install: <code>npm install --save @bevry/pluginloader</code></li>\n<li>Require: <code>require('@bevry/pluginloader')</code></li>\n</ul>\n\n<h3><a href=\"https://editions.bevry.me\" title=\"Editions are the best way to produce and consume packages you care about.\">Editions</a></h3>\n\n<p>This package is published with the following editions:</p>\n\n<ul><li><code>@bevry/pluginloader/source/index.ts</code> is typescript source code with import for modules</li>\n<li><code>@bevry/pluginloader</code> aliases <code>@bevry/pluginloader/edition-node-12/index.js</code></li>\n<li><code>@bevry/pluginloader/edition-node-12/index.js</code> is typescript compiled for node.js 12 with require for modules</li></ul>\n\n<!-- /INSTALL -->\n\n\n## Usage\n\n[Complete API Documentation.](http://master.pluginloader.bevry.surge.sh/docs/)\n\n### Basics\n\nCreate your project:\n\n1. `mkdir my-project`\n1. `cd my-project`\n\nCreate your plugin:\n\n1. `mkdir myplugin`\n1. `cd myplugin`\n1. `npm init`\n1. `index.js` to:\n\n    ``` javascript\n    module.exports = function (BasePlugin) {\n        return class MyPlugin extends BasePlugin {\n            constructor (...args) {\n                super(...args)\n                console.log('hello from my plugin')\n            }\n        }\n    }\n    ```\n\n1. `cd ..`\n\nCreate your plugin loader:\n\n1. `mkdir myapp`\n1. `cd myapp`\n1. `npm init`\n1. `index.js` to:\n\n    ``` javascript\n    class BasePlugin {\n        constructor () {\n            console.log('hello from base plugin')\n        }\n    }\n    const PluginLoader = require('@bevry/pluginloader')\n    const pluginLoader = new PluginLoader({\n        BasePlugin,\n        pluginPath: require('path').resolve(__dirname, '..', 'myplugin')\n    })\n    ```\n\n1. `cd ..`\n\nRun the project:\n\n1. `node myapp/index.js`\n\n\n### Ecosystem\n\n- [pluginclerk](https://github.com/bevry/pluginclerk) a project for fetching compatible plugins from the npm registry\n- [docpad-baseplugin](https://github.com/docpad/docpad-baseplugin) the BasePlugin class that DocPad uses\n- [docpad-plugintester](https://github.com/docpad/docpad-plugintester) testing helpers for DocPad plugins\n\n\n<!-- HISTORY/ -->\n\n<h2>History</h2>\n\n<a href=\"https://github.com/bevry/pluginloader/blob/master/HISTORY.md#files\">Discover the release history by heading on over to the <code>HISTORY.md</code> file.</a>\n\n<!-- /HISTORY -->\n\n\n<!-- CONTRIBUTE/ -->\n\n<h2>Contribute</h2>\n\n<a href=\"https://github.com/bevry/pluginloader/blob/master/CONTRIBUTING.md#files\">Discover how you can contribute by heading on over to the <code>CONTRIBUTING.md</code> file.</a>\n\n<!-- /CONTRIBUTE -->\n\n\n<!-- BACKERS/ -->\n\n<h2>Backers</h2>\n\n<h3>Maintainers</h3>\n\nThese amazing people are maintaining this project:\n\n<ul><li>Benjamin Lupton</li></ul>\n\n<h3>Sponsors</h3>\n\nNo sponsors yet! Will you be the first?\n\n<span class=\"badge-githubsponsors\"><a href=\"https://github.com/sponsors/balupton\" title=\"Donate to this project using GitHub Sponsors\"><img src=\"https://img.shields.io/badge/github-donate-yellow.svg\" alt=\"GitHub Sponsors donate button\" /></a></span>\n<span class=\"badge-patreon\"><a href=\"https://patreon.com/bevry\" title=\"Donate to this project using Patreon\"><img src=\"https://img.shields.io/badge/patreon-donate-yellow.svg\" alt=\"Patreon donate button\" /></a></span>\n<span class=\"badge-flattr\"><a href=\"https://flattr.com/profile/balupton\" title=\"Donate to this project using Flattr\"><img src=\"https://img.shields.io/badge/flattr-donate-yellow.svg\" alt=\"Flattr donate button\" /></a></span>\n<span class=\"badge-liberapay\"><a href=\"https://liberapay.com/bevry\" title=\"Donate to this project using Liberapay\"><img src=\"https://img.shields.io/badge/liberapay-donate-yellow.svg\" alt=\"Liberapay donate button\" /></a></span>\n<span class=\"badge-buymeacoffee\"><a href=\"https://buymeacoffee.com/balupton\" title=\"Donate to this project using Buy Me A Coffee\"><img src=\"https://img.shields.io/badge/buy%20me%20a%20coffee-donate-yellow.svg\" alt=\"Buy Me A Coffee donate button\" /></a></span>\n<span class=\"badge-opencollective\"><a href=\"https://opencollective.com/bevry\" title=\"Donate to this project using Open Collective\"><img src=\"https://img.shields.io/badge/open%20collective-donate-yellow.svg\" alt=\"Open Collective donate button\" /></a></span>\n<span class=\"badge-crypto\"><a href=\"https://bevry.me/crypto\" title=\"Donate to this project using Cryptocurrency\"><img src=\"https://img.shields.io/badge/crypto-donate-yellow.svg\" alt=\"crypto donate button\" /></a></span>\n<span class=\"badge-paypal\"><a href=\"https://bevry.me/paypal\" title=\"Donate to this project using Paypal\"><img src=\"https://img.shields.io/badge/paypal-donate-yellow.svg\" alt=\"PayPal donate button\" /></a></span>\n<span class=\"badge-wishlist\"><a href=\"https://bevry.me/wishlist\" title=\"Buy an item on our wishlist for us\"><img src=\"https://img.shields.io/badge/wishlist-donate-yellow.svg\" alt=\"Wishlist browse button\" /></a></span>\n\n<h3>Contributors</h3>\n\nThese amazing people have contributed code to this project:\n\n<ul><li><a href=\"http://balupton.com\">Benjamin Lupton</a> — <a href=\"https://github.com/bevry/pluginloader/commits?author=balupton\" title=\"View the GitHub contributions of Benjamin Lupton on repository bevry/pluginloader\">view contributions</a></li></ul>\n\n<a href=\"https://github.com/bevry/pluginloader/blob/master/CONTRIBUTING.md#files\">Discover how you can contribute by heading on over to the <code>CONTRIBUTING.md</code> file.</a>\n\n<!-- /BACKERS -->\n\n\n<!-- LICENSE/ -->\n\n<h2>License</h2>\n\nUnless stated otherwise all works are:\n\n<ul><li>Copyright &copy; 2018+ Benjamin Lupton</li></ul>\n\nand licensed under:\n\n<ul><li><a href=\"http://spdx.org/licenses/MIT.html\">MIT License</a></li></ul>\n\n<!-- /LICENSE -->\n","readmeFilename":"README.md","_id":"@bevry/pluginloader@2.1.0-next.1575917292.60421211a2add43d06b9eff5d7e964ed6674d728","_nodeVersion":"12.13.1","_npmVersion":"6.12.1","dist":{"integrity":"sha512-ig8iMroBngTiKW6+m3sKmJha6PkKZl2jV/LnFdACXbTrpDOfDDkEzkn9m+XVD89DxuJImhkMBgDKv6u86tOmTA==","shasum":"beabd795063690105b9b2837f52a74db14a409a6","tarball":"https://registry.npmjs.org/@bevry/pluginloader/-/pluginloader-2.1.0-next.1575917292.60421211a2add43d06b9eff5d7e964ed6674d728.tgz","fileCount":9,"unpackedSize":38837,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJd7pbuCRA9TVsSAnZWagAAkN0P/0Q1RnlDJRL/oHR1/Rp0\nUnE4EmTv9iLfJ4GflM0CbPdnE0Ke90FiqYMuvOlBXelkOGRYbmXdMjfCDSrZ\nQY7VOSdl2aXMmy9WBOXz4iWCjwgtKy11gL1R2424wX08dh9fyEsQxj3tm3bL\nhVZxhBqgBu8HHeX85hTVIK8uQsPFJ3giOJ4SBSeD5aczN/WFhFxsNI8QQ7mr\nrhAkSIemLiTq83HOEU8XVXrq6e88d4ZHDpAXaONIGDWtdAJ7VvovgFOxQ78G\n/NQ63Jnk7nbyiVxUUPnlHU/k59c0e3NR1ib/LoDrvu8jGS+5t2M/t7drsKlP\nay+/AyAJIjcf9/aBB7e4VjI09XXSx5hnTgW6rnpiKRZNPcqhjluS+U8bbpZv\ntici5P0JkyrPIy1NlIpjAg7YaFZU5lGGt0b5k5c4bKGXv3G03yB7jOszL84/\n5hdTFjnycBeFSGc46zYhJyy1ZRRiBoYQ7K/4aFE2NLAn4cB70ePf9m1rNB5T\ndjmBZTWfnqY3CTLw4lC2OntaKe+KNED8IQJ4vC4IkKoDonyVLSe0A4rjR9Yz\nOIU6uk857HeXNSfXm6zP2iLgFSTVAO2st+1r5pqc1Ncp2WK2tbZN863ZBSIm\ncl1j0b2ngHhgGUbpK32tQhHKYb2+VcXrsIH4FM7kox6GeuQ1tZU7eJ/goY/e\nUxV0\r\n=79qu\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHyMetr+MPldo+yjllkrmZ1m6z5KFxTQiW+Hyw8O26LvAiBgVVPmezJrUg17EPqss0bFLjBYHFoZ9mTfOJr12XczeA=="}]},"_npmUser":{"name":"bevryme","email":"us@bevry.me"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/pluginloader_2.1.0-next.1575917292.60421211a2add43d06b9eff5d7e964ed6674d728_1575917293390_0.3747495705394579"},"_hasShrinkwrap":false},"2.1.0-next.1576090672.bc30e0d45617cfa4a6a02356515a8eae89d712d0":{"name":"@bevry/pluginloader","version":"2.1.0-next.1576090672.bc30e0d45617cfa4a6a02356515a8eae89d712d0","description":"A class for loading, verifying, and creating plugins. Used by DocPad for years.","homepage":"https://github.com/bevry/pluginloader","license":"MIT","keywords":["plugin","plugins","loader","bevry","docpad"],"badges":{"list":["travisci","npmversion","npmdownloads","daviddm","daviddmdev","---","githubsponsors","patreon","flattr","liberapay","buymeacoffee","opencollective","crypto","paypal","wishlist"],"config":{"githubSponsorsUsername":"balupton","buymeacoffeeUsername":"balupton","cryptoURL":"https://bevry.me/crypto","flattrUsername":"balupton","liberapayUsername":"bevry","opencollectiveUsername":"bevry","patreonUsername":"bevry","paypalURL":"https://bevry.me/paypal","wishlistURL":"https://bevry.me/wishlist","travisTLD":"com"}},"funding":"https://bevry.me/fund","author":{"name":"2018+ Benjamin Lupton","email":"b@lupton.cc"},"maintainers":[{"name":"balupton","email":"b@lupton.cc"},{"name":"bevryme","email":"us@bevry.me"}],"contributors":[{"name":"Benjamin Lupton","url":"http://balupton.com"}],"bugs":{"url":"https://github.com/bevry/pluginloader/issues"},"repository":{"type":"git","url":"git+https://github.com/bevry/pluginloader.git"},"engines":{"node":">=8"},"editions":[{"description":"typescript source code with import for modules","directory":"source","entry":"index.ts","tags":["typescript","import"],"engines":false},{"description":"typescript compiled for node.js 12 with require for modules","directory":"edition-node-12","entry":"index.js","tags":["javascript","require"],"engines":{"node":"8 || 10 || 12","browsers":false}}],"types":"source/index.ts","type":"commonjs","main":"edition-node-12/index.js","dependencies":{"errlop":"^1.7.0","semver":"^6.3.0","typechecker":"^6.2.0"},"devDependencies":{"@babel/cli":"^7.7.5","@babel/core":"^7.7.5","@babel/plugin-proposal-class-properties":"^7.7.4","@babel/plugin-proposal-object-rest-spread":"^7.7.4","@babel/plugin-proposal-optional-chaining":"^7.7.5","@babel/preset-env":"^7.7.6","@babel/preset-typescript":"^7.7.4","@typescript-eslint/eslint-plugin":"^2.11.0","@typescript-eslint/parser":"^2.11.0","assert-helpers":"^5.8.0","babel-plugin-add-module-exports":"^1.0.2","eslint":"^6.7.2","eslint-config-bevry":"^2.3.0","eslint-config-prettier":"^6.7.0","eslint-plugin-prettier":"^3.1.1","kava":"^4.4.0","prettier":"^1.19.1","projectz":"^1.15.0","surge":"^0.21.3","typedoc":"^0.15.4","typescript":"^3.7.3","valid-directory":"^1.5.0"},"scripts":{"our:clean":"rm -Rf ./docs ./edition* ./es2015 ./es5 ./out ./.next","our:compile":"npm run our:compile:edition-node-12","our:compile:edition-node-12":"env BABEL_ENV=edition-node-12 babel --extensions \".ts,.tsx\" --out-dir ./edition-node-12 ./source","our:deploy":"echo no need for this project","our:meta":"npm run our:meta:docs && npm run our:meta:projectz","our:meta:docs":"npm run our:meta:docs:typedoc","our:meta:docs:typedoc":"rm -Rf ./docs && typedoc --mode file --exclude '**/+(*test*|node_modules)' --excludeExternals --name \"$npm_package_name\" --readme ./README.md --out ./docs ./source","our:meta:projectz":"projectz compile","our:release":"npm run our:release:prepare && npm run our:release:check-changelog && npm run our:release:check-dirty && npm run our:release:tag && npm run our:release:push","our:release:check-changelog":"cat ./HISTORY.md | grep v$npm_package_version || (echo add a changelog entry for v$npm_package_version && exit -1)","our:release:check-dirty":"git diff --exit-code","our:release:prepare":"npm run our:clean && npm run our:compile && npm run our:test && npm run our:meta","our:release:push":"git push origin master && git push origin --tags","our:release:tag":"export MESSAGE=$(cat ./HISTORY.md | sed -n \"/## v$npm_package_version/,/##/p\" | sed 's/## //' | awk 'NR>1{print buf}{buf = $0}') && test \"$MESSAGE\" || (echo 'proper changelog entry not found' && exit -1) && git tag v$npm_package_version -am \"$MESSAGE\"","our:setup":"npm run our:setup:install","our:setup:install":"npm install","our:test":"npm run our:verify && npm test","our:verify":"npm run our:verify:directory && npm run our:verify:eslint && npm run our:verify:prettier && npm run our:verify:typescript","our:verify:directory":"npx valid-directory","our:verify:eslint":"eslint --fix --ignore-pattern '**/*.d.ts' --ignore-pattern '**/vendor/' --ignore-pattern '**/node_modules/' --ext .mjs,.js,.jsx,.ts,.tsx ./source","our:verify:prettier":"prettier --write ./source/**","our:verify:typescript":"tsc --noEmit --project tsconfig.json","test":"node ./edition-node-12/test.js"},"eslintConfig":{"extends":["bevry"]},"prettier":{"semi":false,"singleQuote":true},"babel":{"env":{"edition-node-12":{"sourceType":"module","presets":[["@babel/preset-env",{"targets":{"node":"12"},"modules":"commonjs"}],"@babel/preset-typescript"],"plugins":["@babel/proposal-object-rest-spread","@babel/plugin-proposal-optional-chaining","@babel/proposal-class-properties","add-module-exports"]}}},"gitHead":"bc30e0d45617cfa4a6a02356515a8eae89d712d0","readme":"<!-- TITLE/ -->\n\n<h1>@bevry/pluginloader</h1>\n\n<!-- /TITLE -->\n\n\n<!-- BADGES/ -->\n\n<span class=\"badge-travisci\"><a href=\"http://travis-ci.com/bevry/pluginloader\" title=\"Check this project's build status on TravisCI\"><img src=\"https://img.shields.io/travis/com/bevry/pluginloader/master.svg\" alt=\"Travis CI Build Status\" /></a></span>\n<span class=\"badge-npmversion\"><a href=\"https://npmjs.org/package/@bevry/pluginloader\" title=\"View this project on NPM\"><img src=\"https://img.shields.io/npm/v/@bevry/pluginloader.svg\" alt=\"NPM version\" /></a></span>\n<span class=\"badge-npmdownloads\"><a href=\"https://npmjs.org/package/@bevry/pluginloader\" title=\"View this project on NPM\"><img src=\"https://img.shields.io/npm/dm/@bevry/pluginloader.svg\" alt=\"NPM downloads\" /></a></span>\n<span class=\"badge-daviddm\"><a href=\"https://david-dm.org/bevry/pluginloader\" title=\"View the status of this project's dependencies on DavidDM\"><img src=\"https://img.shields.io/david/bevry/pluginloader.svg\" alt=\"Dependency Status\" /></a></span>\n<span class=\"badge-daviddmdev\"><a href=\"https://david-dm.org/bevry/pluginloader#info=devDependencies\" title=\"View the status of this project's development dependencies on DavidDM\"><img src=\"https://img.shields.io/david/dev/bevry/pluginloader.svg\" alt=\"Dev Dependency Status\" /></a></span>\n<br class=\"badge-separator\" />\n<span class=\"badge-githubsponsors\"><a href=\"https://github.com/sponsors/balupton\" title=\"Donate to this project using GitHub Sponsors\"><img src=\"https://img.shields.io/badge/github-donate-yellow.svg\" alt=\"GitHub Sponsors donate button\" /></a></span>\n<span class=\"badge-patreon\"><a href=\"https://patreon.com/bevry\" title=\"Donate to this project using Patreon\"><img src=\"https://img.shields.io/badge/patreon-donate-yellow.svg\" alt=\"Patreon donate button\" /></a></span>\n<span class=\"badge-flattr\"><a href=\"https://flattr.com/profile/balupton\" title=\"Donate to this project using Flattr\"><img src=\"https://img.shields.io/badge/flattr-donate-yellow.svg\" alt=\"Flattr donate button\" /></a></span>\n<span class=\"badge-liberapay\"><a href=\"https://liberapay.com/bevry\" title=\"Donate to this project using Liberapay\"><img src=\"https://img.shields.io/badge/liberapay-donate-yellow.svg\" alt=\"Liberapay donate button\" /></a></span>\n<span class=\"badge-buymeacoffee\"><a href=\"https://buymeacoffee.com/balupton\" title=\"Donate to this project using Buy Me A Coffee\"><img src=\"https://img.shields.io/badge/buy%20me%20a%20coffee-donate-yellow.svg\" alt=\"Buy Me A Coffee donate button\" /></a></span>\n<span class=\"badge-opencollective\"><a href=\"https://opencollective.com/bevry\" title=\"Donate to this project using Open Collective\"><img src=\"https://img.shields.io/badge/open%20collective-donate-yellow.svg\" alt=\"Open Collective donate button\" /></a></span>\n<span class=\"badge-crypto\"><a href=\"https://bevry.me/crypto\" title=\"Donate to this project using Cryptocurrency\"><img src=\"https://img.shields.io/badge/crypto-donate-yellow.svg\" alt=\"crypto donate button\" /></a></span>\n<span class=\"badge-paypal\"><a href=\"https://bevry.me/paypal\" title=\"Donate to this project using Paypal\"><img src=\"https://img.shields.io/badge/paypal-donate-yellow.svg\" alt=\"PayPal donate button\" /></a></span>\n<span class=\"badge-wishlist\"><a href=\"https://bevry.me/wishlist\" title=\"Buy an item on our wishlist for us\"><img src=\"https://img.shields.io/badge/wishlist-donate-yellow.svg\" alt=\"Wishlist browse button\" /></a></span>\n\n<!-- /BADGES -->\n\n\n<!-- DESCRIPTION/ -->\n\nA class for loading, verifying, and creating plugins. Used by DocPad for years.\n\n<!-- /DESCRIPTION -->\n\n\n<!-- INSTALL/ -->\n\n<h2>Install</h2>\n\n<a href=\"https://npmjs.com\" title=\"npm is a package manager for javascript\"><h3>npm</h3></a>\n<ul>\n<li>Install: <code>npm install --save @bevry/pluginloader</code></li>\n<li>Require: <code>require('@bevry/pluginloader')</code></li>\n</ul>\n\n<h3><a href=\"https://editions.bevry.me\" title=\"Editions are the best way to produce and consume packages you care about.\">Editions</a></h3>\n\n<p>This package is published with the following editions:</p>\n\n<ul><li><code>@bevry/pluginloader/source/index.ts</code> is typescript source code with import for modules</li>\n<li><code>@bevry/pluginloader</code> aliases <code>@bevry/pluginloader/edition-node-12/index.js</code></li>\n<li><code>@bevry/pluginloader/edition-node-12/index.js</code> is typescript compiled for node.js 12 with require for modules</li></ul>\n\n<!-- /INSTALL -->\n\n\n## Usage\n\n[Complete API Documentation.](http://master.pluginloader.bevry.surge.sh/docs/)\n\n### Basics\n\nCreate your project:\n\n1. `mkdir my-project`\n1. `cd my-project`\n\nCreate your plugin:\n\n1. `mkdir myplugin`\n1. `cd myplugin`\n1. `npm init`\n1. `index.js` to:\n\n    ``` javascript\n    module.exports = function (BasePlugin) {\n        return class MyPlugin extends BasePlugin {\n            constructor (...args) {\n                super(...args)\n                console.log('hello from my plugin')\n            }\n        }\n    }\n    ```\n\n1. `cd ..`\n\nCreate your plugin loader:\n\n1. `mkdir myapp`\n1. `cd myapp`\n1. `npm init`\n1. `index.js` to:\n\n    ``` javascript\n    import PluginLoader from '@bevry/pluginloader'\n    \n    class BasePlugin {\n        constructor () {\n            console.log('hello from base plugin')\n        }\n    }\n    \n    const pluginLoader = new PluginLoader({\n        BasePlugin,\n        pluginPath: require('path').resolve(__dirname, '..', 'myplugin')\n    })\n    ```\n\n1. `cd ..`\n\nRun the project:\n\n1. `node myapp/index.js`\n\n\n### Ecosystem\n\n- [pluginclerk](https://github.com/bevry/pluginclerk) a project for fetching compatible plugins from the npm registry\n- [docpad-baseplugin](https://github.com/docpad/docpad-baseplugin) the BasePlugin class that DocPad uses\n- [docpad-plugintester](https://github.com/docpad/docpad-plugintester) testing helpers for DocPad plugins\n\n\n<!-- HISTORY/ -->\n\n<h2>History</h2>\n\n<a href=\"https://github.com/bevry/pluginloader/blob/master/HISTORY.md#files\">Discover the release history by heading on over to the <code>HISTORY.md</code> file.</a>\n\n<!-- /HISTORY -->\n\n\n<!-- CONTRIBUTE/ -->\n\n<h2>Contribute</h2>\n\n<a href=\"https://github.com/bevry/pluginloader/blob/master/CONTRIBUTING.md#files\">Discover how you can contribute by heading on over to the <code>CONTRIBUTING.md</code> file.</a>\n\n<!-- /CONTRIBUTE -->\n\n\n<!-- BACKERS/ -->\n\n<h2>Backers</h2>\n\n<h3>Maintainers</h3>\n\nThese amazing people are maintaining this project:\n\n<ul><li>Benjamin Lupton</li></ul>\n\n<h3>Sponsors</h3>\n\nNo sponsors yet! Will you be the first?\n\n<span class=\"badge-githubsponsors\"><a href=\"https://github.com/sponsors/balupton\" title=\"Donate to this project using GitHub Sponsors\"><img src=\"https://img.shields.io/badge/github-donate-yellow.svg\" alt=\"GitHub Sponsors donate button\" /></a></span>\n<span class=\"badge-patreon\"><a href=\"https://patreon.com/bevry\" title=\"Donate to this project using Patreon\"><img src=\"https://img.shields.io/badge/patreon-donate-yellow.svg\" alt=\"Patreon donate button\" /></a></span>\n<span class=\"badge-flattr\"><a href=\"https://flattr.com/profile/balupton\" title=\"Donate to this project using Flattr\"><img src=\"https://img.shields.io/badge/flattr-donate-yellow.svg\" alt=\"Flattr donate button\" /></a></span>\n<span class=\"badge-liberapay\"><a href=\"https://liberapay.com/bevry\" title=\"Donate to this project using Liberapay\"><img src=\"https://img.shields.io/badge/liberapay-donate-yellow.svg\" alt=\"Liberapay donate button\" /></a></span>\n<span class=\"badge-buymeacoffee\"><a href=\"https://buymeacoffee.com/balupton\" title=\"Donate to this project using Buy Me A Coffee\"><img src=\"https://img.shields.io/badge/buy%20me%20a%20coffee-donate-yellow.svg\" alt=\"Buy Me A Coffee donate button\" /></a></span>\n<span class=\"badge-opencollective\"><a href=\"https://opencollective.com/bevry\" title=\"Donate to this project using Open Collective\"><img src=\"https://img.shields.io/badge/open%20collective-donate-yellow.svg\" alt=\"Open Collective donate button\" /></a></span>\n<span class=\"badge-crypto\"><a href=\"https://bevry.me/crypto\" title=\"Donate to this project using Cryptocurrency\"><img src=\"https://img.shields.io/badge/crypto-donate-yellow.svg\" alt=\"crypto donate button\" /></a></span>\n<span class=\"badge-paypal\"><a href=\"https://bevry.me/paypal\" title=\"Donate to this project using Paypal\"><img src=\"https://img.shields.io/badge/paypal-donate-yellow.svg\" alt=\"PayPal donate button\" /></a></span>\n<span class=\"badge-wishlist\"><a href=\"https://bevry.me/wishlist\" title=\"Buy an item on our wishlist for us\"><img src=\"https://img.shields.io/badge/wishlist-donate-yellow.svg\" alt=\"Wishlist browse button\" /></a></span>\n\n<h3>Contributors</h3>\n\nThese amazing people have contributed code to this project:\n\n<ul><li><a href=\"http://balupton.com\">Benjamin Lupton</a> — <a href=\"https://github.com/bevry/pluginloader/commits?author=balupton\" title=\"View the GitHub contributions of Benjamin Lupton on repository bevry/pluginloader\">view contributions</a></li></ul>\n\n<a href=\"https://github.com/bevry/pluginloader/blob/master/CONTRIBUTING.md#files\">Discover how you can contribute by heading on over to the <code>CONTRIBUTING.md</code> file.</a>\n\n<!-- /BACKERS -->\n\n\n<!-- LICENSE/ -->\n\n<h2>License</h2>\n\nUnless stated otherwise all works are:\n\n<ul><li>Copyright &copy; 2018+ Benjamin Lupton</li></ul>\n\nand licensed under:\n\n<ul><li><a href=\"http://spdx.org/licenses/MIT.html\">MIT License</a></li></ul>\n\n<!-- /LICENSE -->\n","readmeFilename":"README.md","_id":"@bevry/pluginloader@2.1.0-next.1576090672.bc30e0d45617cfa4a6a02356515a8eae89d712d0","_nodeVersion":"12.13.1","_npmVersion":"6.12.1","dist":{"integrity":"sha512-yZvYxPuiRw+amJ1QoEGA1q16ICAd73HkH/WwE25bgUDWcXzg/lfcZ401hdWYIp44pup6gKCEji4HY1z2djHpow==","shasum":"a3742f51202ac31d64afcb748eee507b17aa6ade","tarball":"https://registry.npmjs.org/@bevry/pluginloader/-/pluginloader-2.1.0-next.1576090672.bc30e0d45617cfa4a6a02356515a8eae89d712d0.tgz","fileCount":9,"unpackedSize":38842,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJd8TwyCRA9TVsSAnZWagAADLYP/RZU8InCetF9gK0KGOfu\nejN284mJ9hzClyJOw4CEfUvjwVuFy6p5dYqXW5QzxRUsWWVsTdCrxRonerbH\ndNgpWPBp1GWvK5K1y9QB3GTTX4dQ9R+B7jC5NBK9+mlCV3ZT4GFXIP+U11ZK\nHgpMzikbc71vb67XQgErk0Z0J/s6hpcPMojDKSJFxG5k99G1YqflCXtqP3ZH\nl4r3VgX0nvHhV5MwPJWO7TzJXfI/FYYq9eeAoUOyvlFBOKIcq9QgHEmB0PW6\nXXEDrUOEEzYYzboFHJGb/P+6hap3Y1O7oWm7/WXiHg8maafldivSjOjEHys2\nPVm/NHI93xU8wJg3iHELYKSmK40vcrvnjpRahQmdmQIpGOC+anxILu3YRdF7\nM44TrdHi7pnQvW0JVhnNoloVATvwRiqM2MnFUDR+H1TlqHx0FXmqZKgsmKqZ\nwOfvGhKkSPtdAlAWvOBtFWjhJkXCo0NCINZKZ17D3T9WFf5NR/FNa/Z9WkP5\nJ1sM8+un+XDJilglgHz4GUyx3LuI80ucM4v7bUHN2KXVGqFWmNCJGZ2gX7MG\nCEjdGltyh2fn5Wkgx+atdiA3SKpAS/V5dc590INPbmgtcpZ85VGPUb1Uu9UY\n/gu7clBukHx6plbo7kRibUa/qnYhrt9ctACYNcSc9nZ0tKAXcYHXY/Du31ES\nn9zx\r\n=ZEEO\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHjfyUrxqPhOdNz8oRIYnuY6IY7aYRTznUGg9J7llTKRAiEA8Wogwqr6VFf7cmiHWpSgCgVenCF1KTPHrSFDZCzwCVM="}]},"_npmUser":{"name":"bevryme","email":"us@bevry.me"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/pluginloader_2.1.0-next.1576090672.bc30e0d45617cfa4a6a02356515a8eae89d712d0_1576090673655_0.21439373937385753"},"_hasShrinkwrap":false},"3.0.0-next.1576634054.32f1f98547c9c1a74b70b6bbf504cb9fd97ded8f":{"name":"@bevry/pluginloader","version":"3.0.0-next.1576634054.32f1f98547c9c1a74b70b6bbf504cb9fd97ded8f","description":"A class for loading, verifying, and creating plugins. Used by DocPad for years.","homepage":"https://github.com/bevry/pluginloader","license":"MIT","keywords":["bevry","docpad","export-default","loader","plugin","plugins","typed","types","typescript"],"badges":{"list":["travisci","npmversion","npmdownloads","daviddm","daviddmdev","---","githubsponsors","patreon","flattr","liberapay","buymeacoffee","opencollective","crypto","paypal","wishlist"],"config":{"githubSponsorsUsername":"balupton","buymeacoffeeUsername":"balupton","cryptoURL":"https://bevry.me/crypto","flattrUsername":"balupton","liberapayUsername":"bevry","opencollectiveUsername":"bevry","patreonUsername":"bevry","paypalURL":"https://bevry.me/paypal","wishlistURL":"https://bevry.me/wishlist","travisTLD":"com"}},"funding":"https://bevry.me/fund","author":{"name":"2018+ Benjamin Lupton","email":"b@lupton.cc"},"maintainers":[{"name":"balupton","email":"b@lupton.cc"},{"name":"bevryme","email":"us@bevry.me"}],"contributors":[{"name":"Benjamin Lupton","url":"http://balupton.com"}],"bugs":{"url":"https://github.com/bevry/pluginloader/issues"},"repository":{"type":"git","url":"git+https://github.com/bevry/pluginloader.git"},"engines":{"node":">=8"},"editions":[{"description":"TypeScript source code with Import for modules","directory":"source","entry":"index.ts","tags":["typescript","import"],"engines":false},{"description":"TypeScript compiled against ESNext for Node.js with Require for modules","directory":"edition-esnext","entry":"index.js","tags":["javascript","esnext","require"],"engines":{"node":"8 || 10 || 12 || 13"}}],"types":"source/index.ts","type":"commonjs","main":"edition-esnext/index.js","dependencies":{"errlop":"^2.0.0","semver":"^7.1.1","typechecker":"^6.3.0"},"devDependencies":{"@typescript-eslint/eslint-plugin":"^2.12.0","@typescript-eslint/parser":"^2.12.0","assert-helpers":"^5.8.0","eslint":"^6.7.2","eslint-config-bevry":"^2.3.0","eslint-config-prettier":"^6.7.0","eslint-plugin-prettier":"^3.1.2","kava":"^4.4.0","prettier":"^1.19.1","projectz":"^1.19.0","surge":"^0.21.3","typedoc":"^0.15.5","typescript":"^3.7.3","valid-directory":"^1.6.0"},"scripts":{"our:clean":"rm -Rf ./docs ./edition* ./es2015 ./es5 ./out ./.next","our:compile":"npm run our:compile:edition-esnext","our:compile:edition-esnext":"tsc --module commonjs --target ESNext --outDir ./edition-esnext --project tsconfig.json && test -d edition-esnext/source && ( mv edition-esnext/source edition-temp && rm -Rf edition-esnext && mv edition-temp edition-esnext ) || true","our:deploy":"echo no need for this project","our:meta":"npm run our:meta:docs && npm run our:meta:projectz","our:meta:docs":"npm run our:meta:docs:typedoc","our:meta:docs:typedoc":"rm -Rf ./docs && typedoc --mode file --exclude '**/+(*test*|node_modules)' --excludeExternals --name \"$npm_package_name\" --readme ./README.md --out ./docs ./source","our:meta:projectz":"projectz compile","our:release":"npm run our:release:prepare && npm run our:release:check-changelog && npm run our:release:check-dirty && npm run our:release:tag && npm run our:release:push","our:release:check-changelog":"cat ./HISTORY.md | grep v$npm_package_version || (echo add a changelog entry for v$npm_package_version && exit -1)","our:release:check-dirty":"git diff --exit-code","our:release:prepare":"npm run our:clean && npm run our:compile && npm run our:test && npm run our:meta","our:release:push":"git push origin master && git push origin --tags","our:release:tag":"export MESSAGE=$(cat ./HISTORY.md | sed -n \"/## v$npm_package_version/,/##/p\" | sed 's/## //' | awk 'NR>1{print buf}{buf = $0}') && test \"$MESSAGE\" || (echo 'proper changelog entry not found' && exit -1) && git tag v$npm_package_version -am \"$MESSAGE\"","our:setup":"npm run our:setup:install","our:setup:install":"npm install","our:test":"npm run our:verify && npm test","our:verify":"npm run our:verify:directory && npm run our:verify:eslint && npm run our:verify:prettier && npm run our:verify:typescript","our:verify:directory":"valid-directory","our:verify:eslint":"eslint --fix --ignore-pattern '**/*.d.ts' --ignore-pattern '**/vendor/' --ignore-pattern '**/node_modules/' --ext .mjs,.js,.jsx,.ts,.tsx ./source","our:verify:prettier":"prettier --write ./source/**","our:verify:typescript":"tsc --noEmit --project tsconfig.json","test":"node ./edition-esnext/test.js"},"eslintConfig":{"extends":["bevry"]},"prettier":{"semi":false,"singleQuote":true},"gitHead":"32f1f98547c9c1a74b70b6bbf504cb9fd97ded8f","readme":"<!-- TITLE/ -->\n\n<h1>@bevry/pluginloader</h1>\n\n<!-- /TITLE -->\n\n\n<!-- BADGES/ -->\n\n<span class=\"badge-travisci\"><a href=\"http://travis-ci.com/bevry/pluginloader\" title=\"Check this project's build status on TravisCI\"><img src=\"https://img.shields.io/travis/com/bevry/pluginloader/master.svg\" alt=\"Travis CI Build Status\" /></a></span>\n<span class=\"badge-npmversion\"><a href=\"https://npmjs.org/package/@bevry/pluginloader\" title=\"View this project on NPM\"><img src=\"https://img.shields.io/npm/v/@bevry/pluginloader.svg\" alt=\"NPM version\" /></a></span>\n<span class=\"badge-npmdownloads\"><a href=\"https://npmjs.org/package/@bevry/pluginloader\" title=\"View this project on NPM\"><img src=\"https://img.shields.io/npm/dm/@bevry/pluginloader.svg\" alt=\"NPM downloads\" /></a></span>\n<span class=\"badge-daviddm\"><a href=\"https://david-dm.org/bevry/pluginloader\" title=\"View the status of this project's dependencies on DavidDM\"><img src=\"https://img.shields.io/david/bevry/pluginloader.svg\" alt=\"Dependency Status\" /></a></span>\n<span class=\"badge-daviddmdev\"><a href=\"https://david-dm.org/bevry/pluginloader#info=devDependencies\" title=\"View the status of this project's development dependencies on DavidDM\"><img src=\"https://img.shields.io/david/dev/bevry/pluginloader.svg\" alt=\"Dev Dependency Status\" /></a></span>\n<br class=\"badge-separator\" />\n<span class=\"badge-githubsponsors\"><a href=\"https://github.com/sponsors/balupton\" title=\"Donate to this project using GitHub Sponsors\"><img src=\"https://img.shields.io/badge/github-donate-yellow.svg\" alt=\"GitHub Sponsors donate button\" /></a></span>\n<span class=\"badge-patreon\"><a href=\"https://patreon.com/bevry\" title=\"Donate to this project using Patreon\"><img src=\"https://img.shields.io/badge/patreon-donate-yellow.svg\" alt=\"Patreon donate button\" /></a></span>\n<span class=\"badge-flattr\"><a href=\"https://flattr.com/profile/balupton\" title=\"Donate to this project using Flattr\"><img src=\"https://img.shields.io/badge/flattr-donate-yellow.svg\" alt=\"Flattr donate button\" /></a></span>\n<span class=\"badge-liberapay\"><a href=\"https://liberapay.com/bevry\" title=\"Donate to this project using Liberapay\"><img src=\"https://img.shields.io/badge/liberapay-donate-yellow.svg\" alt=\"Liberapay donate button\" /></a></span>\n<span class=\"badge-buymeacoffee\"><a href=\"https://buymeacoffee.com/balupton\" title=\"Donate to this project using Buy Me A Coffee\"><img src=\"https://img.shields.io/badge/buy%20me%20a%20coffee-donate-yellow.svg\" alt=\"Buy Me A Coffee donate button\" /></a></span>\n<span class=\"badge-opencollective\"><a href=\"https://opencollective.com/bevry\" title=\"Donate to this project using Open Collective\"><img src=\"https://img.shields.io/badge/open%20collective-donate-yellow.svg\" alt=\"Open Collective donate button\" /></a></span>\n<span class=\"badge-crypto\"><a href=\"https://bevry.me/crypto\" title=\"Donate to this project using Cryptocurrency\"><img src=\"https://img.shields.io/badge/crypto-donate-yellow.svg\" alt=\"crypto donate button\" /></a></span>\n<span class=\"badge-paypal\"><a href=\"https://bevry.me/paypal\" title=\"Donate to this project using Paypal\"><img src=\"https://img.shields.io/badge/paypal-donate-yellow.svg\" alt=\"PayPal donate button\" /></a></span>\n<span class=\"badge-wishlist\"><a href=\"https://bevry.me/wishlist\" title=\"Buy an item on our wishlist for us\"><img src=\"https://img.shields.io/badge/wishlist-donate-yellow.svg\" alt=\"Wishlist browse button\" /></a></span>\n\n<!-- /BADGES -->\n\n\n<!-- DESCRIPTION/ -->\n\nA class for loading, verifying, and creating plugins. Used by DocPad for years.\n\n<!-- /DESCRIPTION -->\n\n\n## Usage\n\n[Complete API Documentation.](http://master.pluginloader.bevry.surge.sh/docs/)\n\n### Basics\n\nCreate your project:\n\n1. `mkdir my-project`\n1. `cd my-project`\n\nCreate your plugin:\n\n1. `mkdir myplugin`\n1. `cd myplugin`\n1. `npm init`\n1. `index.js` to:\n\n    ``` javascript\n    module.exports = function (BasePlugin) {\n        return class MyPlugin extends BasePlugin {\n            constructor (...args) {\n                super(...args)\n                console.log('hello from my plugin')\n            }\n        }\n    }\n    ```\n\n1. `cd ..`\n\nCreate your plugin loader:\n\n1. `mkdir myapp`\n1. `cd myapp`\n1. `npm init`\n1. `index.js` to:\n\n    ``` javascript\n    import PluginLoader from '@bevry/pluginloader'\n    \n    class BasePlugin {\n        constructor () {\n            console.log('hello from base plugin')\n        }\n    }\n    \n    const pluginLoader = new PluginLoader({\n        BasePlugin,\n        pluginPath: require('path').resolve(__dirname, '..', 'myplugin')\n    })\n    ```\n\n1. `cd ..`\n\nRun the project:\n\n1. `node myapp/index.js`\n\n\n### Ecosystem\n\n- [pluginclerk](https://github.com/bevry/pluginclerk) a project for fetching compatible plugins from the npm registry\n- [docpad-baseplugin](https://github.com/docpad/docpad-baseplugin) the BasePlugin class that DocPad uses\n- [docpad-plugintester](https://github.com/docpad/docpad-plugintester) testing helpers for DocPad plugins\n\n\n\n\n<!-- INSTALL/ -->\n\n<h2>Install</h2>\n\n<a href=\"https://npmjs.com\" title=\"npm is a package manager for javascript\"><h3>npm</h3></a>\n<ul>\n<li>Install: <code>npm install --save @bevry/pluginloader</code></li>\n<li>Import: <code>import pkg from ('@bevry/pluginloader')</code></li>\n<li>Require: <code>const pkg = require('@bevry/pluginloader').default</code></li>\n</ul>\n\n<h3><a href=\"https://editions.bevry.me\" title=\"Editions are the best way to produce and consume packages you care about.\">Editions</a></h3>\n\n<p>This package is published with the following editions:</p>\n\n<ul><li><code>@bevry/pluginloader/source/index.ts</code> is <a href=\"https://www.typescriptlang.org/\" title=\"TypeScript is a typed superset of JavaScript that compiles to plain JavaScript. \">TypeScript</a> source code with <a href=\"https://babeljs.io/docs/learn-es2015/#modules\" title=\"ECMAScript Modules\">Import</a> for modules</li>\n<li><code>@bevry/pluginloader</code> aliases <code>@bevry/pluginloader/edition-esnext/index.js</code></li>\n<li><code>@bevry/pluginloader/edition-esnext/index.js</code> is <a href=\"https://www.typescriptlang.org/\" title=\"TypeScript is a typed superset of JavaScript that compiles to plain JavaScript. \">TypeScript</a> compiled against <a href=\"https://en.wikipedia.org/wiki/ECMAScript#ES.Next\" title=\"ECMAScript Next\">ESNext</a> for <a href=\"https://nodejs.org\" title=\"Node.js is a JavaScript runtime built on Chrome's V8 JavaScript engine\">Node.js</a> with <a href=\"https://nodejs.org/dist/latest-v5.x/docs/api/modules.html\" title=\"Node/CJS Modules\">Require</a> for modules</li></ul>\n\n<!-- /INSTALL -->\n\n\n<!-- HISTORY/ -->\n\n<h2>History</h2>\n\n<a href=\"https://github.com/bevry/pluginloader/blob/master/HISTORY.md#files\">Discover the release history by heading on over to the <code>HISTORY.md</code> file.</a>\n\n<!-- /HISTORY -->\n\n\n<!-- CONTRIBUTE/ -->\n\n<h2>Contribute</h2>\n\n<a href=\"https://github.com/bevry/pluginloader/blob/master/CONTRIBUTING.md#files\">Discover how you can contribute by heading on over to the <code>CONTRIBUTING.md</code> file.</a>\n\n<!-- /CONTRIBUTE -->\n\n\n<!-- BACKERS/ -->\n\n<h2>Backers</h2>\n\n<h3>Maintainers</h3>\n\nThese amazing people are maintaining this project:\n\n<ul><li>Benjamin Lupton</li></ul>\n\n<h3>Sponsors</h3>\n\nNo sponsors yet! Will you be the first?\n\n<span class=\"badge-githubsponsors\"><a href=\"https://github.com/sponsors/balupton\" title=\"Donate to this project using GitHub Sponsors\"><img src=\"https://img.shields.io/badge/github-donate-yellow.svg\" alt=\"GitHub Sponsors donate button\" /></a></span>\n<span class=\"badge-patreon\"><a href=\"https://patreon.com/bevry\" title=\"Donate to this project using Patreon\"><img src=\"https://img.shields.io/badge/patreon-donate-yellow.svg\" alt=\"Patreon donate button\" /></a></span>\n<span class=\"badge-flattr\"><a href=\"https://flattr.com/profile/balupton\" title=\"Donate to this project using Flattr\"><img src=\"https://img.shields.io/badge/flattr-donate-yellow.svg\" alt=\"Flattr donate button\" /></a></span>\n<span class=\"badge-liberapay\"><a href=\"https://liberapay.com/bevry\" title=\"Donate to this project using Liberapay\"><img src=\"https://img.shields.io/badge/liberapay-donate-yellow.svg\" alt=\"Liberapay donate button\" /></a></span>\n<span class=\"badge-buymeacoffee\"><a href=\"https://buymeacoffee.com/balupton\" title=\"Donate to this project using Buy Me A Coffee\"><img src=\"https://img.shields.io/badge/buy%20me%20a%20coffee-donate-yellow.svg\" alt=\"Buy Me A Coffee donate button\" /></a></span>\n<span class=\"badge-opencollective\"><a href=\"https://opencollective.com/bevry\" title=\"Donate to this project using Open Collective\"><img src=\"https://img.shields.io/badge/open%20collective-donate-yellow.svg\" alt=\"Open Collective donate button\" /></a></span>\n<span class=\"badge-crypto\"><a href=\"https://bevry.me/crypto\" title=\"Donate to this project using Cryptocurrency\"><img src=\"https://img.shields.io/badge/crypto-donate-yellow.svg\" alt=\"crypto donate button\" /></a></span>\n<span class=\"badge-paypal\"><a href=\"https://bevry.me/paypal\" title=\"Donate to this project using Paypal\"><img src=\"https://img.shields.io/badge/paypal-donate-yellow.svg\" alt=\"PayPal donate button\" /></a></span>\n<span class=\"badge-wishlist\"><a href=\"https://bevry.me/wishlist\" title=\"Buy an item on our wishlist for us\"><img src=\"https://img.shields.io/badge/wishlist-donate-yellow.svg\" alt=\"Wishlist browse button\" /></a></span>\n\n<h3>Contributors</h3>\n\nThese amazing people have contributed code to this project:\n\n<ul><li><a href=\"http://balupton.com\">Benjamin Lupton</a> — <a href=\"https://github.com/bevry/pluginloader/commits?author=balupton\" title=\"View the GitHub contributions of Benjamin Lupton on repository bevry/pluginloader\">view contributions</a></li></ul>\n\n<a href=\"https://github.com/bevry/pluginloader/blob/master/CONTRIBUTING.md#files\">Discover how you can contribute by heading on over to the <code>CONTRIBUTING.md</code> file.</a>\n\n<!-- /BACKERS -->\n\n\n<!-- LICENSE/ -->\n\n<h2>License</h2>\n\nUnless stated otherwise all works are:\n\n<ul><li>Copyright &copy; 2018+ Benjamin Lupton</li></ul>\n\nand licensed under:\n\n<ul><li><a href=\"http://spdx.org/licenses/MIT.html\">MIT License</a></li></ul>\n\n<!-- /LICENSE -->\n","readmeFilename":"README.md","_id":"@bevry/pluginloader@3.0.0-next.1576634054.32f1f98547c9c1a74b70b6bbf504cb9fd97ded8f","_nodeVersion":"12.14.0","_npmVersion":"6.13.4","dist":{"integrity":"sha512-yb+1cjRjjXLI3c5UllJQzHqJiU0A7DN3FyID0YOqGjVL5hFshcTTk8WBh2ZeIrdt0H6eEwl23pluxNv/1GJLIw==","shasum":"445d1c7b7317d5714021d4d9f7eee03c45c28636","tarball":"https://registry.npmjs.org/@bevry/pluginloader/-/pluginloader-3.0.0-next.1576634054.32f1f98547c9c1a74b70b6bbf504cb9fd97ded8f.tgz","fileCount":8,"unpackedSize":37260,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJd+YbICRA9TVsSAnZWagAAgbMP/2wHXz72nLiLggZUFA+C\n2mnZVumgR6VzQUVx0QtV9PEg4MS/vFeQQSzsxGiPYJDPrN18g5GVVaIcYBJU\nXakcsDkWliBQHds5LHKWvo2y7u2UFBTwu4O3ttGt/HCjPOPdfMlXEp30vJ6E\nu7p4fTDXEeSLQhz/orcntgNq4GuvJRxobBXHQaFzVgYRPvduNvoCLC8V27ZR\nQfk6jhu9sfCPKXi7nYLHBk5KuvvWdqKG58v93LpwHyva31XeiDC4MyjH4/JC\nOObDH24H9MZ3ohC7U3HmR5FkZQOyuUiPEzpRgp9ZADJg2yAtaR/tRreb9M5X\nHN+ZWs6tkHTzpmEhR+zOOch9An18VpzNjLIAUtv1fe24ysFd0GakMe8C2+J2\nEp21dPOigKndq/x9gUtfaB8n//XYKKSzJ96oiJwqWQ8dSTSwN5aXYkalx+II\neRfqWcXf1QzOmzfskYiU1jFR6xoh6J/uCMwp7hVM4h4LBQascwY9cZ1imDGh\nNndX45uM0ovIueKkvzYv6e9Y0VS0wTYgLFQcsVFy+hWalcFvTIAnWcYc45pA\nNlAxVddFrG+7pIqPvnlg7aBbYAsSRavm0vpmNdxZfafuyoicpq91qoJbmWLy\ntgJOuA791lkFnbbUD8JZlOOhtaM/I+lZdkjZyqS2ObbkMoU1dAzFV/+RDsSk\nbmKE\r\n=yp26\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCgOTOkfP9vuxcLzyFySeJrOIFfnbLcN6uqi8Jh0Yh/1gIhAIfr/ICnzzI51/5Z9PIjHsNXmSN6LssgWdYngcVsgPpP"}]},"_npmUser":{"name":"bevryme","email":"us@bevry.me"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/pluginloader_3.0.0-next.1576634054.32f1f98547c9c1a74b70b6bbf504cb9fd97ded8f_1576634056282_0.5105887907703865"},"_hasShrinkwrap":false},"3.0.0":{"name":"@bevry/pluginloader","version":"3.0.0","description":"A class for loading, verifying, and creating plugins. Used by DocPad for years.","homepage":"https://github.com/bevry/pluginloader","license":"MIT","keywords":["bevry","docpad","export-default","loader","plugin","plugins","typed","types","typescript"],"badges":{"list":["travisci","npmversion","npmdownloads","daviddm","daviddmdev","---","githubsponsors","patreon","flattr","liberapay","buymeacoffee","opencollective","crypto","paypal","wishlist"],"config":{"githubSponsorsUsername":"balupton","buymeacoffeeUsername":"balupton","cryptoURL":"https://bevry.me/crypto","flattrUsername":"balupton","liberapayUsername":"bevry","opencollectiveUsername":"bevry","patreonUsername":"bevry","paypalURL":"https://bevry.me/paypal","wishlistURL":"https://bevry.me/wishlist","travisTLD":"com"}},"funding":"https://bevry.me/fund","author":{"name":"2018+ Benjamin Lupton","email":"b@lupton.cc"},"maintainers":[{"name":"balupton","email":"b@lupton.cc"},{"name":"bevryme","email":"us@bevry.me"}],"contributors":[{"name":"Benjamin Lupton","url":"http://balupton.com"}],"bugs":{"url":"https://github.com/bevry/pluginloader/issues"},"repository":{"type":"git","url":"git+https://github.com/bevry/pluginloader.git"},"engines":{"node":">=8"},"editions":[{"description":"TypeScript source code with Import for modules","directory":"source","entry":"index.ts","tags":["typescript","import"],"engines":false},{"description":"TypeScript compiled against ESNext for Node.js with Require for modules","directory":"edition-esnext","entry":"index.js","tags":["javascript","esnext","require"],"engines":{"node":"8 || 10 || 12 || 13"}}],"types":"source/index.ts","type":"commonjs","main":"edition-esnext/index.js","dependencies":{"errlop":"^2.0.0","semver":"^7.1.1","typechecker":"^6.3.0"},"devDependencies":{"@typescript-eslint/eslint-plugin":"^2.12.0","@typescript-eslint/parser":"^2.12.0","assert-helpers":"^5.8.0","eslint":"^6.7.2","eslint-config-bevry":"^2.3.0","eslint-config-prettier":"^6.7.0","eslint-plugin-prettier":"^3.1.2","kava":"^4.4.0","prettier":"^1.19.1","projectz":"^1.19.0","surge":"^0.21.3","typedoc":"^0.15.5","typescript":"^3.7.3","valid-directory":"^1.6.0"},"scripts":{"our:clean":"rm -Rf ./docs ./edition* ./es2015 ./es5 ./out ./.next","our:compile":"npm run our:compile:edition-esnext","our:compile:edition-esnext":"tsc --module commonjs --target ESNext --outDir ./edition-esnext --project tsconfig.json && test -d edition-esnext/source && ( mv edition-esnext/source edition-temp && rm -Rf edition-esnext && mv edition-temp edition-esnext ) || true","our:deploy":"echo no need for this project","our:meta":"npm run our:meta:docs && npm run our:meta:projectz","our:meta:docs":"npm run our:meta:docs:typedoc","our:meta:docs:typedoc":"rm -Rf ./docs && typedoc --mode file --exclude '**/+(*test*|node_modules)' --excludeExternals --name \"$npm_package_name\" --readme ./README.md --out ./docs ./source","our:meta:projectz":"projectz compile","our:release":"npm run our:release:prepare && npm run our:release:check-changelog && npm run our:release:check-dirty && npm run our:release:tag && npm run our:release:push","our:release:check-changelog":"cat ./HISTORY.md | grep v$npm_package_version || (echo add a changelog entry for v$npm_package_version && exit -1)","our:release:check-dirty":"git diff --exit-code","our:release:prepare":"npm run our:clean && npm run our:compile && npm run our:test && npm run our:meta","our:release:push":"git push origin master && git push origin --tags","our:release:tag":"export MESSAGE=$(cat ./HISTORY.md | sed -n \"/## v$npm_package_version/,/##/p\" | sed 's/## //' | awk 'NR>1{print buf}{buf = $0}') && test \"$MESSAGE\" || (echo 'proper changelog entry not found' && exit -1) && git tag v$npm_package_version -am \"$MESSAGE\"","our:setup":"npm run our:setup:install","our:setup:install":"npm install","our:test":"npm run our:verify && npm test","our:verify":"npm run our:verify:directory && npm run our:verify:eslint && npm run our:verify:prettier && npm run our:verify:typescript","our:verify:directory":"valid-directory","our:verify:eslint":"eslint --fix --ignore-pattern '**/*.d.ts' --ignore-pattern '**/vendor/' --ignore-pattern '**/node_modules/' --ext .mjs,.js,.jsx,.ts,.tsx ./source","our:verify:prettier":"prettier --write ./source/**","our:verify:typescript":"tsc --noEmit --project tsconfig.json","test":"node ./edition-esnext/test.js"},"eslintConfig":{"extends":["bevry"]},"prettier":{"semi":false,"singleQuote":true},"gitHead":"32f1f98547c9c1a74b70b6bbf504cb9fd97ded8f","_id":"@bevry/pluginloader@3.0.0","_nodeVersion":"12.14.0","_npmVersion":"6.13.4","dist":{"integrity":"sha512-BiiDemevqE3gCxfmRvuwN+J5f2TfwkrvafsCuKrt1RPy/BMd88jAhINt9z/C0ue4tqqYV5qOaetpvWVc6TkhOg==","shasum":"44d4c48733f97fb29515fb7d4bd2361589902eb3","tarball":"https://registry.npmjs.org/@bevry/pluginloader/-/pluginloader-3.0.0.tgz","fileCount":8,"unpackedSize":37203,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJd+YcJCRA9TVsSAnZWagAA708P+gMCanFn3AObPn6hr+ZX\n32Tkjor5JM9aKCcfwKjNaA+bOK2cvPs3Ns5bttF3RsW9EleuK5but47GzgVv\nD1LMnJYf2BsqMksr4Tw1fiaoZmdtb+M0jES+/9LhKrz2JOt0U/2Tv9lbE3b2\n7/6KoucovBt4j676b4+x0XvOOjgTrnApfGVfbx6nq8ZQY7hr/150g0G571bS\nm43mll5zy5NdbmWblXsP5U1s8LHxQHjF+GE/5s80a8i8TOdaJx8VMIeB10H1\nRPe8uof//Na9D3Dic/sOeb4E88p/0652QObxTHFDapP+RtdKEMIeBzRZdLzh\noUMt/xEwCECzbplbfjjwuDCZTRKGs5vnUO0BVzaPO4vYqvnQtIvIUS9P33pE\ntcWUfAZBG6mYGKQ4DPHsnhRaLxIxGorrN/o8EIeF5hKFaXU6p8oKn51nig9C\nqGeyiDUN5gx8pGRkVL58zlm4jbOyL4pmTZmQlf+wRbhZCjhEHEyMY4zIar1g\nGk2RdrduDkUoCDYAohCYp7GgseO+xm8JrQ1kw85O+ABNlD0Ltmx6vBlHg+yC\nbVzH1Umz9f7FHk97/n/gd53FqHofZH1R4/oUtFdhNSwZ1X7rBGXGfpQ9uz5R\nK+TEc2Fawjuqfghkv7/cuo9SK5FzDtMcyim7Gyi06Bb/pOu8Qxvxbw9UskWm\n+g1R\r\n=rx55\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCLG05+nlRmisRsN63U9T5863KsVBRBeUAezG8Mbht7ZQIgPL01hrWFbZgGVCfszHKZLQrdGKyvjh2wRbzZNtOOewg="}]},"_npmUser":{"name":"bevryme","email":"us@bevry.me"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/pluginloader_3.0.0_1576634120386_0.9691937970655016"},"_hasShrinkwrap":false},"4.0.0-next.1589184740.9182d5e1d1aba91bda3889008cb1ac699c08715b":{"name":"@bevry/pluginloader","version":"4.0.0-next.1589184740.9182d5e1d1aba91bda3889008cb1ac699c08715b","description":"A class for loading, verifying, and creating plugins. Used by DocPad for years.","homepage":"https://github.com/bevry/pluginloader","license":"MIT","keywords":["bevry","docpad","export-default","loader","node","plugin","plugins","typed","types","typescript"],"badges":{"list":["travisci","npmversion","npmdownloads","daviddm","daviddmdev","---","githubsponsors","patreon","flattr","liberapay","buymeacoffee","opencollective","crypto","paypal","wishlist"],"config":{"githubSponsorsUsername":"balupton","buymeacoffeeUsername":"balupton","cryptoURL":"https://bevry.me/crypto","flattrUsername":"balupton","liberapayUsername":"bevry","opencollectiveUsername":"bevry","patreonUsername":"bevry","paypalURL":"https://bevry.me/paypal","wishlistURL":"https://bevry.me/wishlist","travisTLD":"com","githubUsername":"bevry","githubRepository":"pluginloader","githubSlug":"bevry/pluginloader","npmPackageName":"@bevry/pluginloader"}},"funding":"https://bevry.me/fund","author":{"name":"2018+ Benjamin Lupton","email":"b@lupton.cc"},"maintainers":[{"name":"balupton","email":"b@lupton.cc"},{"name":"bevryme","email":"us@bevry.me"}],"contributors":[{"name":"Benjamin Lupton","url":"https://github.com/balupton"}],"bugs":{"url":"https://github.com/bevry/pluginloader/issues"},"repository":{"type":"git","url":"git+https://github.com/bevry/pluginloader.git"},"engines":{"node":">=10"},"editions":[{"description":"TypeScript source code with Import for modules","directory":"source","entry":"index.ts","tags":["typescript","import"],"engines":false},{"description":"TypeScript compiled against ESNext for Node.js with Require for modules","directory":"edition-esnext","entry":"index.js","tags":["javascript","esnext","require"],"engines":{"node":"10 || 12 || 13 || 14"}}],"types":"source/index.ts","type":"commonjs","main":"edition-esnext/index.js","dependencies":{"errlop":"^2.2.0","semver":"^7.3.2","typechecker":"^6.4.0"},"devDependencies":{"@bevry/update-contributors":"^1.4.0","@typescript-eslint/eslint-plugin":"^2.31.0","@typescript-eslint/parser":"^2.31.0","assert-helpers":"^6.2.0","eslint":"^7.0.0","eslint-config-bevry":"^3.4.0","eslint-config-prettier":"^6.11.0","eslint-plugin-prettier":"^3.1.3","kava":"^5.0.0","prettier":"^2.0.5","projectz":"^2.0.0","surge":"^0.21.3","typedoc":"^0.17.6","typescript":"^3.8.3","valid-directory":"^1.6.0"},"scripts":{"our:clean":"rm -Rf ./docs ./edition* ./es2015 ./es5 ./out ./.next","our:compile":"npm run our:compile:edition-esnext","our:compile:edition-esnext":"tsc --module commonjs --target ESNext --outDir ./edition-esnext --project tsconfig.json && test -d edition-esnext/source && ( mv edition-esnext/source edition-temp && rm -Rf edition-esnext && mv edition-temp edition-esnext ) || true","our:deploy":"echo no need for this project","our:meta":"npm run our:meta:contributors && npm run our:meta:docs && npm run our:meta:projectz","our:meta:contributors":"npx @bevry/update-contributors","our:meta:docs":"npm run our:meta:docs:typedoc","our:meta:docs:typedoc":"rm -Rf ./docs && npx typedoc --mode file --exclude '**/+(*test*|node_modules)' --excludeExternals --name \"$npm_package_name\" --readme ./README.md --out ./docs ./source","our:meta:projectz":"npx projectz compile","our:release":"npm run our:release:prepare && npm run our:release:check-changelog && npm run our:release:check-dirty && npm run our:release:tag && npm run our:release:push","our:release:check-changelog":"cat ./HISTORY.md | grep v$npm_package_version || (echo add a changelog entry for v$npm_package_version && exit -1)","our:release:check-dirty":"git diff --exit-code","our:release:prepare":"npm run our:clean && npm run our:compile && npm run our:test && npm run our:meta","our:release:push":"git push origin master && git push origin --tags","our:release:tag":"export MESSAGE=$(cat ./HISTORY.md | sed -n \"/## v$npm_package_version/,/##/p\" | sed 's/## //' | awk 'NR>1{print buf}{buf = $0}') && test \"$MESSAGE\" || (echo 'proper changelog entry not found' && exit -1) && git tag v$npm_package_version -am \"$MESSAGE\"","our:setup":"npm run our:setup:install","our:setup:install":"npm install","our:test":"npm run our:verify && npm test","our:verify":"npm run our:verify:directory && npm run our:verify:eslint && npm run our:verify:prettier && npm run our:verify:typescript","our:verify:directory":"npx valid-directory","our:verify:eslint":"npx eslint --fix --ignore-pattern '**/*.d.ts' --ignore-pattern '**/vendor/' --ignore-pattern '**/node_modules/' --ext .mjs,.js,.jsx,.ts,.tsx ./source","our:verify:prettier":"npx prettier --write .","our:verify:typescript":"npx tsc --noEmit --project tsconfig.json","test":"node ./edition-esnext/test.js"},"eslintConfig":{"extends":["bevry"]},"prettier":{"semi":false,"singleQuote":true},"gitHead":"9182d5e1d1aba91bda3889008cb1ac699c08715b","readme":"<!-- TITLE/ -->\n\n<h1>@bevry/pluginloader</h1>\n\n<!-- /TITLE -->\n\n\n<!-- BADGES/ -->\n\n<span class=\"badge-travisci\"><a href=\"http://travis-ci.com/bevry/pluginloader\" title=\"Check this project's build status on TravisCI\"><img src=\"https://img.shields.io/travis/com/bevry/pluginloader/master.svg\" alt=\"Travis CI Build Status\" /></a></span>\n<span class=\"badge-npmversion\"><a href=\"https://npmjs.org/package/@bevry/pluginloader\" title=\"View this project on NPM\"><img src=\"https://img.shields.io/npm/v/@bevry/pluginloader.svg\" alt=\"NPM version\" /></a></span>\n<span class=\"badge-npmdownloads\"><a href=\"https://npmjs.org/package/@bevry/pluginloader\" title=\"View this project on NPM\"><img src=\"https://img.shields.io/npm/dm/@bevry/pluginloader.svg\" alt=\"NPM downloads\" /></a></span>\n<span class=\"badge-daviddm\"><a href=\"https://david-dm.org/bevry/pluginloader\" title=\"View the status of this project's dependencies on DavidDM\"><img src=\"https://img.shields.io/david/bevry/pluginloader.svg\" alt=\"Dependency Status\" /></a></span>\n<span class=\"badge-daviddmdev\"><a href=\"https://david-dm.org/bevry/pluginloader#info=devDependencies\" title=\"View the status of this project's development dependencies on DavidDM\"><img src=\"https://img.shields.io/david/dev/bevry/pluginloader.svg\" alt=\"Dev Dependency Status\" /></a></span>\n<br class=\"badge-separator\" />\n<span class=\"badge-githubsponsors\"><a href=\"https://github.com/sponsors/balupton\" title=\"Donate to this project using GitHub Sponsors\"><img src=\"https://img.shields.io/badge/github-donate-yellow.svg\" alt=\"GitHub Sponsors donate button\" /></a></span>\n<span class=\"badge-patreon\"><a href=\"https://patreon.com/bevry\" title=\"Donate to this project using Patreon\"><img src=\"https://img.shields.io/badge/patreon-donate-yellow.svg\" alt=\"Patreon donate button\" /></a></span>\n<span class=\"badge-flattr\"><a href=\"https://flattr.com/profile/balupton\" title=\"Donate to this project using Flattr\"><img src=\"https://img.shields.io/badge/flattr-donate-yellow.svg\" alt=\"Flattr donate button\" /></a></span>\n<span class=\"badge-liberapay\"><a href=\"https://liberapay.com/bevry\" title=\"Donate to this project using Liberapay\"><img src=\"https://img.shields.io/badge/liberapay-donate-yellow.svg\" alt=\"Liberapay donate button\" /></a></span>\n<span class=\"badge-buymeacoffee\"><a href=\"https://buymeacoffee.com/balupton\" title=\"Donate to this project using Buy Me A Coffee\"><img src=\"https://img.shields.io/badge/buy%20me%20a%20coffee-donate-yellow.svg\" alt=\"Buy Me A Coffee donate button\" /></a></span>\n<span class=\"badge-opencollective\"><a href=\"https://opencollective.com/bevry\" title=\"Donate to this project using Open Collective\"><img src=\"https://img.shields.io/badge/open%20collective-donate-yellow.svg\" alt=\"Open Collective donate button\" /></a></span>\n<span class=\"badge-crypto\"><a href=\"https://bevry.me/crypto\" title=\"Donate to this project using Cryptocurrency\"><img src=\"https://img.shields.io/badge/crypto-donate-yellow.svg\" alt=\"crypto donate button\" /></a></span>\n<span class=\"badge-paypal\"><a href=\"https://bevry.me/paypal\" title=\"Donate to this project using Paypal\"><img src=\"https://img.shields.io/badge/paypal-donate-yellow.svg\" alt=\"PayPal donate button\" /></a></span>\n<span class=\"badge-wishlist\"><a href=\"https://bevry.me/wishlist\" title=\"Buy an item on our wishlist for us\"><img src=\"https://img.shields.io/badge/wishlist-donate-yellow.svg\" alt=\"Wishlist browse button\" /></a></span>\n\n<!-- /BADGES -->\n\n\n<!-- DESCRIPTION/ -->\n\nA class for loading, verifying, and creating plugins. Used by DocPad for years.\n\n<!-- /DESCRIPTION -->\n\n\n## Usage\n\n[Complete API Documentation.](http://master.pluginloader.bevry.surge.sh/docs/globals.html)\n\n### Basics\n\nCreate your project:\n\n1. `mkdir my-project`\n1. `cd my-project`\n\nCreate your plugin:\n\n1. `mkdir myplugin`\n1. `cd myplugin`\n1. `npm init`\n1. `index.js` to:\n\n    ```javascript\n    module.exports = function (BasePlugin) {\n        return class MyPlugin extends BasePlugin {\n            constructor(...args) {\n                super(...args)\n                console.log('hello from my plugin')\n            }\n        }\n    }\n    ```\n\n1. `cd ..`\n\nCreate your plugin loader:\n\n1. `mkdir myapp`\n1. `cd myapp`\n1. `npm init`\n1. `index.js` to:\n\n    ```javascript\n    import PluginLoader from '@bevry/pluginloader'\n\n    class BasePlugin {\n        constructor() {\n            console.log('hello from base plugin')\n        }\n    }\n\n    const pluginLoader = new PluginLoader({\n        BasePlugin,\n        pluginPath: require('path').resolve(__dirname, '..', 'myplugin'),\n    })\n    ```\n\n1. `cd ..`\n\nRun the project:\n\n1. `node myapp/index.js`\n\n### Ecosystem\n\n-   [pluginclerk](https://github.com/bevry/pluginclerk) a project for fetching compatible plugins from the npm registry\n-   [docpad-baseplugin](https://github.com/docpad/docpad-baseplugin) the BasePlugin class that DocPad uses\n-   [docpad-plugintester](https://github.com/docpad/docpad-plugintester) testing helpers for DocPad plugins\n\n<!-- INSTALL/ -->\n\n<h2>Install</h2>\n\n<a href=\"https://npmjs.com\" title=\"npm is a package manager for javascript\"><h3>npm</h3></a>\n<ul>\n<li>Install: <code>npm install --save @bevry/pluginloader</code></li>\n<li>Import: <code>import pkg from ('@bevry/pluginloader')</code></li>\n<li>Require: <code>const pkg = require('@bevry/pluginloader').default</code></li>\n</ul>\n\n<h3><a href=\"https://editions.bevry.me\" title=\"Editions are the best way to produce and consume packages you care about.\">Editions</a></h3>\n\n<p>This package is published with the following editions:</p>\n\n<ul><li><code>@bevry/pluginloader/source/index.ts</code> is <a href=\"https://www.typescriptlang.org/\" title=\"TypeScript is a typed superset of JavaScript that compiles to plain JavaScript. \">TypeScript</a> source code with <a href=\"https://babeljs.io/docs/learn-es2015/#modules\" title=\"ECMAScript Modules\">Import</a> for modules</li>\n<li><code>@bevry/pluginloader</code> aliases <code>@bevry/pluginloader/edition-esnext/index.js</code></li>\n<li><code>@bevry/pluginloader/edition-esnext/index.js</code> is <a href=\"https://www.typescriptlang.org/\" title=\"TypeScript is a typed superset of JavaScript that compiles to plain JavaScript. \">TypeScript</a> compiled against <a href=\"https://en.wikipedia.org/wiki/ECMAScript#ES.Next\" title=\"ECMAScript Next\">ESNext</a> for <a href=\"https://nodejs.org\" title=\"Node.js is a JavaScript runtime built on Chrome's V8 JavaScript engine\">Node.js</a> with <a href=\"https://nodejs.org/dist/latest-v5.x/docs/api/modules.html\" title=\"Node/CJS Modules\">Require</a> for modules</li></ul>\n\n<!-- /INSTALL -->\n\n\n<!-- HISTORY/ -->\n\n<h2>History</h2>\n\n<a href=\"https://github.com/bevry/pluginloader/blob/master/HISTORY.md#files\">Discover the release history by heading on over to the <code>HISTORY.md</code> file.</a>\n\n<!-- /HISTORY -->\n\n\n<!-- CONTRIBUTE/ -->\n\n<h2>Contribute</h2>\n\n<a href=\"https://github.com/bevry/pluginloader/blob/master/CONTRIBUTING.md#files\">Discover how you can contribute by heading on over to the <code>CONTRIBUTING.md</code> file.</a>\n\n<!-- /CONTRIBUTE -->\n\n\n<!-- BACKERS/ -->\n\n<h2>Backers</h2>\n\n<h3>Maintainers</h3>\n\nThese amazing people are maintaining this project:\n\n<ul><li>Benjamin Lupton</li></ul>\n\n<h3>Sponsors</h3>\n\nNo sponsors yet! Will you be the first?\n\n<span class=\"badge-githubsponsors\"><a href=\"https://github.com/sponsors/balupton\" title=\"Donate to this project using GitHub Sponsors\"><img src=\"https://img.shields.io/badge/github-donate-yellow.svg\" alt=\"GitHub Sponsors donate button\" /></a></span>\n<span class=\"badge-patreon\"><a href=\"https://patreon.com/bevry\" title=\"Donate to this project using Patreon\"><img src=\"https://img.shields.io/badge/patreon-donate-yellow.svg\" alt=\"Patreon donate button\" /></a></span>\n<span class=\"badge-flattr\"><a href=\"https://flattr.com/profile/balupton\" title=\"Donate to this project using Flattr\"><img src=\"https://img.shields.io/badge/flattr-donate-yellow.svg\" alt=\"Flattr donate button\" /></a></span>\n<span class=\"badge-liberapay\"><a href=\"https://liberapay.com/bevry\" title=\"Donate to this project using Liberapay\"><img src=\"https://img.shields.io/badge/liberapay-donate-yellow.svg\" alt=\"Liberapay donate button\" /></a></span>\n<span class=\"badge-buymeacoffee\"><a href=\"https://buymeacoffee.com/balupton\" title=\"Donate to this project using Buy Me A Coffee\"><img src=\"https://img.shields.io/badge/buy%20me%20a%20coffee-donate-yellow.svg\" alt=\"Buy Me A Coffee donate button\" /></a></span>\n<span class=\"badge-opencollective\"><a href=\"https://opencollective.com/bevry\" title=\"Donate to this project using Open Collective\"><img src=\"https://img.shields.io/badge/open%20collective-donate-yellow.svg\" alt=\"Open Collective donate button\" /></a></span>\n<span class=\"badge-crypto\"><a href=\"https://bevry.me/crypto\" title=\"Donate to this project using Cryptocurrency\"><img src=\"https://img.shields.io/badge/crypto-donate-yellow.svg\" alt=\"crypto donate button\" /></a></span>\n<span class=\"badge-paypal\"><a href=\"https://bevry.me/paypal\" title=\"Donate to this project using Paypal\"><img src=\"https://img.shields.io/badge/paypal-donate-yellow.svg\" alt=\"PayPal donate button\" /></a></span>\n<span class=\"badge-wishlist\"><a href=\"https://bevry.me/wishlist\" title=\"Buy an item on our wishlist for us\"><img src=\"https://img.shields.io/badge/wishlist-donate-yellow.svg\" alt=\"Wishlist browse button\" /></a></span>\n\n<h3>Contributors</h3>\n\nThese amazing people have contributed code to this project:\n\n<ul><li><a href=\"https://github.com/balupton\">Benjamin Lupton</a> — <a href=\"https://github.com/bevry/pluginloader/commits?author=balupton\" title=\"View the GitHub contributions of Benjamin Lupton on repository bevry/pluginloader\">view contributions</a></li></ul>\n\n<a href=\"https://github.com/bevry/pluginloader/blob/master/CONTRIBUTING.md#files\">Discover how you can contribute by heading on over to the <code>CONTRIBUTING.md</code> file.</a>\n\n<!-- /BACKERS -->\n\n\n<!-- LICENSE/ -->\n\n<h2>License</h2>\n\nUnless stated otherwise all works are:\n\n<ul><li>Copyright &copy; 2018+ Benjamin Lupton</li></ul>\n\nand licensed under:\n\n<ul><li><a href=\"http://spdx.org/licenses/MIT.html\">MIT License</a></li></ul>\n\n<!-- /LICENSE -->\n","readmeFilename":"README.md","_id":"@bevry/pluginloader@4.0.0-next.1589184740.9182d5e1d1aba91bda3889008cb1ac699c08715b","_nodeVersion":"14.2.0","_npmVersion":"6.14.4","dist":{"integrity":"sha512-XobqGriCLviHrKgrYKjSywkApl7DhATJchxvCX9bhRaxgJMu+aafRqa23PrBRwQ9usFsPXpUzdCiC7zgfyz+7g==","shasum":"1eb5d94902c9ccadaee91db82f6dd570c851dcc1","tarball":"https://registry.npmjs.org/@bevry/pluginloader/-/pluginloader-4.0.0-next.1589184740.9182d5e1d1aba91bda3889008cb1ac699c08715b.tgz","fileCount":8,"unpackedSize":36907,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeuQjmCRA9TVsSAnZWagAABrwP/RiGTm5qcMWH5x/KM8ll\nUhj+g/cNVdY0Q2N9et803tIJ9ObwgtGEJb02Cv5kzkuBlu0nxexwO3gN/PuL\nYX1YKFNxHeBGOPm7SGPjHgMS6bMLhYLG4IX0nnJNJalHd8WcsF0Fjs6uldeW\nR8JPD+MjgeX1tn7Yuim17h1uvnUB/Pr/Mg3EIeSNGkOgn25+QFayVzZ6lUcc\n8zaKjDErpY+8PR1HEWHRp4CK2XPaKV5AndIf3DIg2ALv1GN+t/LWG4+tssMJ\ngWdYO/f+jpdPW63ftlTnToPxq4LQ/dgs4Om6ga4nPVAZEwRb6Qt/hGjQ7THy\njZRijSl7RBUscR7BmwxhEHM4tC8+xE99cq4jhb7+80LUTYjt8p2pU7Sn9xJF\ngERzAKldsb45526XcBTRlt7c/18xwMI7OLhIqG43e9rn8QX6l5qVKQu8Fi/V\nWiWuGo7paDwqcdR2zjLhYtqy+gi9lEUQlasrogyPsVKNgDY4yS4e01L3GwOw\nKjCpfdCs15URhxRaemzRnfKrBbwusn4xCDEHpJfRoAzZnRcOmishWpRzjv4m\nUhjnxdnGf4wQIGs1ZheHNzWv9v2Bf9qOtL3SjtS6wO+H8emMiSbEZC0ilJ/t\nNUOYNr272n5qycHvdlUJOzNR734QKZneUgGokLqDCojio+GCnrHP8oMvxQlR\npwqL\r\n=XzhG\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGscpjlg9tTdtx3TGRMANP3bjaO/MejgzXWuy1cC8VFmAiAF3pLQqTj5lFJHp4CzoZP4q4Lx/2YCNl9tQzbMMY7RZA=="}]},"_npmUser":{"name":"bevryme","email":"us@bevry.me"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/pluginloader_4.0.0-next.1589184740.9182d5e1d1aba91bda3889008cb1ac699c08715b_1589184741893_0.43696019873892733"},"_hasShrinkwrap":false},"4.0.0":{"name":"@bevry/pluginloader","version":"4.0.0","description":"A class for loading, verifying, and creating plugins. Used by DocPad for years.","homepage":"https://github.com/bevry/pluginloader","license":"MIT","keywords":["bevry","docpad","export-default","loader","node","plugin","plugins","typed","types","typescript"],"badges":{"list":["travisci","npmversion","npmdownloads","daviddm","daviddmdev","---","githubsponsors","patreon","flattr","liberapay","buymeacoffee","opencollective","crypto","paypal","wishlist"],"config":{"githubSponsorsUsername":"balupton","buymeacoffeeUsername":"balupton","cryptoURL":"https://bevry.me/crypto","flattrUsername":"balupton","liberapayUsername":"bevry","opencollectiveUsername":"bevry","patreonUsername":"bevry","paypalURL":"https://bevry.me/paypal","wishlistURL":"https://bevry.me/wishlist","travisTLD":"com","githubUsername":"bevry","githubRepository":"pluginloader","githubSlug":"bevry/pluginloader","npmPackageName":"@bevry/pluginloader"}},"funding":"https://bevry.me/fund","author":{"name":"2018+ Benjamin Lupton","email":"b@lupton.cc"},"maintainers":[{"name":"balupton","email":"b@lupton.cc"},{"name":"bevryme","email":"us@bevry.me"}],"contributors":[{"name":"Benjamin Lupton","url":"https://github.com/balupton"}],"bugs":{"url":"https://github.com/bevry/pluginloader/issues"},"repository":{"type":"git","url":"git+https://github.com/bevry/pluginloader.git"},"engines":{"node":">=10"},"editions":[{"description":"TypeScript source code with Import for modules","directory":"source","entry":"index.ts","tags":["typescript","import"],"engines":false},{"description":"TypeScript compiled against ESNext for Node.js with Require for modules","directory":"edition-esnext","entry":"index.js","tags":["javascript","esnext","require"],"engines":{"node":"10 || 12 || 13 || 14"}}],"types":"source/index.ts","type":"commonjs","main":"edition-esnext/index.js","dependencies":{"errlop":"^2.2.0","semver":"^7.3.2","typechecker":"^6.4.0"},"devDependencies":{"@bevry/update-contributors":"^1.4.0","@typescript-eslint/eslint-plugin":"^2.31.0","@typescript-eslint/parser":"^2.31.0","assert-helpers":"^6.2.0","eslint":"^7.0.0","eslint-config-bevry":"^3.4.0","eslint-config-prettier":"^6.11.0","eslint-plugin-prettier":"^3.1.3","kava":"^5.0.0","prettier":"^2.0.5","projectz":"^2.0.0","surge":"^0.21.3","typedoc":"^0.17.6","typescript":"^3.8.3","valid-directory":"^1.6.0"},"scripts":{"our:clean":"rm -Rf ./docs ./edition* ./es2015 ./es5 ./out ./.next","our:compile":"npm run our:compile:edition-esnext","our:compile:edition-esnext":"tsc --module commonjs --target ESNext --outDir ./edition-esnext --project tsconfig.json && test -d edition-esnext/source && ( mv edition-esnext/source edition-temp && rm -Rf edition-esnext && mv edition-temp edition-esnext ) || true","our:deploy":"echo no need for this project","our:meta":"npm run our:meta:contributors && npm run our:meta:docs && npm run our:meta:projectz","our:meta:contributors":"npx @bevry/update-contributors","our:meta:docs":"npm run our:meta:docs:typedoc","our:meta:docs:typedoc":"rm -Rf ./docs && npx typedoc --mode file --exclude '**/+(*test*|node_modules)' --excludeExternals --name \"$npm_package_name\" --readme ./README.md --out ./docs ./source","our:meta:projectz":"npx projectz compile","our:release":"npm run our:release:prepare && npm run our:release:check-changelog && npm run our:release:check-dirty && npm run our:release:tag && npm run our:release:push","our:release:check-changelog":"cat ./HISTORY.md | grep v$npm_package_version || (echo add a changelog entry for v$npm_package_version && exit -1)","our:release:check-dirty":"git diff --exit-code","our:release:prepare":"npm run our:clean && npm run our:compile && npm run our:test && npm run our:meta","our:release:push":"git push origin master && git push origin --tags","our:release:tag":"export MESSAGE=$(cat ./HISTORY.md | sed -n \"/## v$npm_package_version/,/##/p\" | sed 's/## //' | awk 'NR>1{print buf}{buf = $0}') && test \"$MESSAGE\" || (echo 'proper changelog entry not found' && exit -1) && git tag v$npm_package_version -am \"$MESSAGE\"","our:setup":"npm run our:setup:install","our:setup:install":"npm install","our:test":"npm run our:verify && npm test","our:verify":"npm run our:verify:directory && npm run our:verify:eslint && npm run our:verify:prettier && npm run our:verify:typescript","our:verify:directory":"npx valid-directory","our:verify:eslint":"npx eslint --fix --ignore-pattern '**/*.d.ts' --ignore-pattern '**/vendor/' --ignore-pattern '**/node_modules/' --ext .mjs,.js,.jsx,.ts,.tsx ./source","our:verify:prettier":"npx prettier --write .","our:verify:typescript":"npx tsc --noEmit --project tsconfig.json","test":"node ./edition-esnext/test.js"},"eslintConfig":{"extends":["bevry"]},"prettier":{"semi":false,"singleQuote":true},"gitHead":"9182d5e1d1aba91bda3889008cb1ac699c08715b","_id":"@bevry/pluginloader@4.0.0","_nodeVersion":"14.2.0","_npmVersion":"6.14.4","dist":{"integrity":"sha512-RgkLbAEav7UeA1/dbOFo8+uJLndRI8tdkIIing/L89JbH86V0pH2NNMnsssrH5mZk2RonSb8gqxIcYv2plGQgg==","shasum":"11bcca68c8a246a3b3089b1afe235e1608274149","tarball":"https://registry.npmjs.org/@bevry/pluginloader/-/pluginloader-4.0.0.tgz","fileCount":8,"unpackedSize":36850,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeuQkrCRA9TVsSAnZWagAAPuMP/2ylNx7E3I3QJZIhmrjy\ndKrmbeLK5qAgAwkDiLngS2YZEA6qZm7UAIqQLrPNqyCS75XWL+PLMJdjxB89\nAoCZ1FmkBmSFdmBzvJf98XynL+4DqdYGXI+AgUVaYgw9skZd9S3wCsGhY1fU\neQYWaQBCMpx8B+AvnsJFSrPwHX8mGVy/QT5zYvbqwnwjhWU0eIaYZYaOJ0xw\nqScEslSN8gQA76NgTtJWycO7TGVbn3zq4HZni02oe10R6LOb0fdqdwAh2CU6\ncV8nIPbyKLPPZzYuHlaEyBV8AYxTpSr45m2Y4QOOAbriZFwJdVUI9xSxb+RF\neOJpNsRPNFjU2uBhbIvRevyiCLXJMLgBW6W8uaQzftCmzduJk08VNXu/BROx\n+KWxPZe9PgJ+agpDc/+Ft+s4A00Z94HV9oeZfTtHt1VF49RIkNK3RzbRNydC\nAixmBOxiAzkFyhoZVUUailZkHVwrIaoULGmssBjK3apyyHLkFhJpVT1aNH6T\nL1FPujInWk1tYbCv9PgK+iQ/POucq+l+ntORbm0647ukoncM4ahcu2IQhivN\nPac2Q7XPYhC5V0hXotioKRZtJ+2UG8oIXtDbeXBFfuOc0DYQnPzv8zZHeP3t\nLEGp66zqaqEt+LR6pihUlX6yxAMk+bM3+OEXDYHc4kJ4Fe/7YtGl1J+00Hax\nqPnl\r\n=qfXb\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHwKIrouYhl881maw4+BpLzZWpmBRQq/7/La0IrSrMppAiEA0TsUypDnVzOXQV/PP6C1pkhapI4pjQLH7jtjujV6gw0="}]},"_npmUser":{"name":"bevryme","email":"us@bevry.me"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/pluginloader_4.0.0_1589184810811_0.17011775816179475"},"_hasShrinkwrap":false},"4.1.0-next.1590005359.76fe139f6462956b85c5b598de5870933de648a6":{"name":"@bevry/pluginloader","version":"4.1.0-next.1590005359.76fe139f6462956b85c5b598de5870933de648a6","description":"A class for loading, verifying, and creating plugins. Used by DocPad for years.","homepage":"https://github.com/bevry/pluginloader","license":"MIT","keywords":["bevry","docpad","export-default","loader","node","plugin","plugins","typed","types","typescript"],"badges":{"list":["travisci","npmversion","npmdownloads","daviddm","daviddmdev","---","githubsponsors","patreon","flattr","liberapay","buymeacoffee","opencollective","crypto","paypal","wishlist"],"config":{"githubSponsorsUsername":"balupton","buymeacoffeeUsername":"balupton","cryptoURL":"https://bevry.me/crypto","flattrUsername":"balupton","liberapayUsername":"bevry","opencollectiveUsername":"bevry","patreonUsername":"bevry","paypalURL":"https://bevry.me/paypal","wishlistURL":"https://bevry.me/wishlist","travisTLD":"com","githubUsername":"bevry","githubRepository":"pluginloader","githubSlug":"bevry/pluginloader","npmPackageName":"@bevry/pluginloader"}},"funding":"https://bevry.me/fund","author":{"name":"2018+ Benjamin Lupton","email":"b@lupton.cc","url":"https://balupton.com"},"maintainers":[{"email":"b@lupton.cc","name":"balupton"},{"email":"us@bevry.me","name":"bevryme"},{"email":"sumitrai96@gmail.com","name":"sumitrai"}],"contributors":[{"name":"Benjamin Lupton","email":"b@lupton.cc","url":"https://github.com/balupton"}],"bugs":{"url":"https://github.com/bevry/pluginloader/issues"},"repository":{"type":"git","url":"git+https://github.com/bevry/pluginloader.git"},"engines":{"node":">=10"},"editions":[{"description":"TypeScript source code with Import for modules","directory":"source","entry":"index.ts","tags":["typescript","import"],"engines":false},{"description":"TypeScript compiled against ESNext for Node.js with Require for modules","directory":"edition-esnext","entry":"index.js","tags":["javascript","esnext","require"],"engines":{"node":"10 || 12 || 13 || 14"}}],"types":"./compiled-types/","type":"commonjs","main":"edition-esnext/index.js","dependencies":{"errlop":"^3.0.0","semver":"^7.3.2","typechecker":"^7.0.0"},"devDependencies":{"@bevry/update-contributors":"^1.5.0","@typescript-eslint/eslint-plugin":"^2.34.0","@typescript-eslint/parser":"^2.34.0","assert-helpers":"^6.4.0","eslint":"^7.0.0","eslint-config-bevry":"^3.5.0","eslint-config-prettier":"^6.11.0","eslint-plugin-prettier":"^3.1.3","kava":"^5.1.0","prettier":"^2.0.5","projectz":"^2.1.0","surge":"^0.21.3","typedoc":"^0.17.7","typescript":"^3.9.3","valid-directory":"^1.6.0"},"scripts":{"our:clean":"rm -Rf ./docs ./edition* ./es2015 ./es5 ./out ./.next","our:compile":"npm run our:compile:edition-esnext && npm run our:compile:types","our:compile:edition-esnext":"tsc --module commonjs --target ESNext --outDir ./edition-esnext --project tsconfig.json && test -d edition-esnext/source && ( mv edition-esnext/source edition-temp && rm -Rf edition-esnext && mv edition-temp edition-esnext ) || true","our:compile:types":"tsc --project tsconfig.json --emitDeclarationOnly --declaration --declarationDir ./compiled-types/ --declarationMap","our:deploy":"echo no need for this project","our:meta":"npm run our:meta:contributors && npm run our:meta:docs && npm run our:meta:projectz","our:meta:contributors":"update-contributors","our:meta:docs":"npm run our:meta:docs:typedoc","our:meta:docs:typedoc":"rm -Rf ./docs && typedoc --mode file --exclude '**/+(*test*|node_modules)' --excludeExternals --name \"$npm_package_name\" --readme ./README.md --out ./docs ./source","our:meta:projectz":"projectz compile","our:release":"npm run our:release:prepare && npm run our:release:check-changelog && npm run our:release:check-dirty && npm run our:release:tag && npm run our:release:push","our:release:check-changelog":"cat ./HISTORY.md | grep v$npm_package_version || (echo add a changelog entry for v$npm_package_version && exit -1)","our:release:check-dirty":"git diff --exit-code","our:release:prepare":"npm run our:clean && npm run our:compile && npm run our:test && npm run our:meta","our:release:push":"git push origin master && git push origin --tags","our:release:tag":"export MESSAGE=$(cat ./HISTORY.md | sed -n \"/## v$npm_package_version/,/##/p\" | sed 's/## //' | awk 'NR>1{print buf}{buf = $0}') && test \"$MESSAGE\" || (echo 'proper changelog entry not found' && exit -1) && git tag v$npm_package_version -am \"$MESSAGE\"","our:setup":"npm run our:setup:install","our:setup:install":"npm install","our:test":"npm run our:verify && npm test","our:verify":"npm run our:verify:directory && npm run our:verify:eslint && npm run our:verify:prettier","our:verify:directory":"valid-directory","our:verify:eslint":"eslint --fix --ignore-pattern '**/*.d.ts' --ignore-pattern '**/vendor/' --ignore-pattern '**/node_modules/' --ext .mjs,.js,.jsx,.ts,.tsx ./source","our:verify:prettier":"prettier --write .","test":"node ./edition-esnext/test.js"},"eslintConfig":{"extends":["bevry"]},"prettier":{"semi":false,"singleQuote":true},"gitHead":"76fe139f6462956b85c5b598de5870933de648a6","readme":"<!-- TITLE/ -->\n\n<h1>@bevry/pluginloader</h1>\n\n<!-- /TITLE -->\n\n\n<!-- BADGES/ -->\n\n<span class=\"badge-travisci\"><a href=\"http://travis-ci.com/bevry/pluginloader\" title=\"Check this project's build status on TravisCI\"><img src=\"https://img.shields.io/travis/com/bevry/pluginloader/master.svg\" alt=\"Travis CI Build Status\" /></a></span>\n<span class=\"badge-npmversion\"><a href=\"https://npmjs.org/package/@bevry/pluginloader\" title=\"View this project on NPM\"><img src=\"https://img.shields.io/npm/v/@bevry/pluginloader.svg\" alt=\"NPM version\" /></a></span>\n<span class=\"badge-npmdownloads\"><a href=\"https://npmjs.org/package/@bevry/pluginloader\" title=\"View this project on NPM\"><img src=\"https://img.shields.io/npm/dm/@bevry/pluginloader.svg\" alt=\"NPM downloads\" /></a></span>\n<span class=\"badge-daviddm\"><a href=\"https://david-dm.org/bevry/pluginloader\" title=\"View the status of this project's dependencies on DavidDM\"><img src=\"https://img.shields.io/david/bevry/pluginloader.svg\" alt=\"Dependency Status\" /></a></span>\n<span class=\"badge-daviddmdev\"><a href=\"https://david-dm.org/bevry/pluginloader#info=devDependencies\" title=\"View the status of this project's development dependencies on DavidDM\"><img src=\"https://img.shields.io/david/dev/bevry/pluginloader.svg\" alt=\"Dev Dependency Status\" /></a></span>\n<br class=\"badge-separator\" />\n<span class=\"badge-githubsponsors\"><a href=\"https://github.com/sponsors/balupton\" title=\"Donate to this project using GitHub Sponsors\"><img src=\"https://img.shields.io/badge/github-donate-yellow.svg\" alt=\"GitHub Sponsors donate button\" /></a></span>\n<span class=\"badge-patreon\"><a href=\"https://patreon.com/bevry\" title=\"Donate to this project using Patreon\"><img src=\"https://img.shields.io/badge/patreon-donate-yellow.svg\" alt=\"Patreon donate button\" /></a></span>\n<span class=\"badge-flattr\"><a href=\"https://flattr.com/profile/balupton\" title=\"Donate to this project using Flattr\"><img src=\"https://img.shields.io/badge/flattr-donate-yellow.svg\" alt=\"Flattr donate button\" /></a></span>\n<span class=\"badge-liberapay\"><a href=\"https://liberapay.com/bevry\" title=\"Donate to this project using Liberapay\"><img src=\"https://img.shields.io/badge/liberapay-donate-yellow.svg\" alt=\"Liberapay donate button\" /></a></span>\n<span class=\"badge-buymeacoffee\"><a href=\"https://buymeacoffee.com/balupton\" title=\"Donate to this project using Buy Me A Coffee\"><img src=\"https://img.shields.io/badge/buy%20me%20a%20coffee-donate-yellow.svg\" alt=\"Buy Me A Coffee donate button\" /></a></span>\n<span class=\"badge-opencollective\"><a href=\"https://opencollective.com/bevry\" title=\"Donate to this project using Open Collective\"><img src=\"https://img.shields.io/badge/open%20collective-donate-yellow.svg\" alt=\"Open Collective donate button\" /></a></span>\n<span class=\"badge-crypto\"><a href=\"https://bevry.me/crypto\" title=\"Donate to this project using Cryptocurrency\"><img src=\"https://img.shields.io/badge/crypto-donate-yellow.svg\" alt=\"crypto donate button\" /></a></span>\n<span class=\"badge-paypal\"><a href=\"https://bevry.me/paypal\" title=\"Donate to this project using Paypal\"><img src=\"https://img.shields.io/badge/paypal-donate-yellow.svg\" alt=\"PayPal donate button\" /></a></span>\n<span class=\"badge-wishlist\"><a href=\"https://bevry.me/wishlist\" title=\"Buy an item on our wishlist for us\"><img src=\"https://img.shields.io/badge/wishlist-donate-yellow.svg\" alt=\"Wishlist browse button\" /></a></span>\n\n<!-- /BADGES -->\n\n\n<!-- DESCRIPTION/ -->\n\nA class for loading, verifying, and creating plugins. Used by DocPad for years.\n\n<!-- /DESCRIPTION -->\n\n\n## Usage\n\n[Complete API Documentation.](http://master.pluginloader.bevry.surge.sh/docs/globals.html)\n\n### Basics\n\nCreate your project:\n\n1. `mkdir my-project`\n1. `cd my-project`\n\nCreate your plugin:\n\n1. `mkdir myplugin`\n1. `cd myplugin`\n1. `npm init`\n1. `index.js` to:\n\n    ```javascript\n    module.exports = function (BasePlugin) {\n        return class MyPlugin extends BasePlugin {\n            constructor(...args) {\n                super(...args)\n                console.log('hello from my plugin')\n            }\n        }\n    }\n    ```\n\n1. `cd ..`\n\nCreate your plugin loader:\n\n1. `mkdir myapp`\n1. `cd myapp`\n1. `npm init`\n1. `index.js` to:\n\n    ```javascript\n    import PluginLoader from '@bevry/pluginloader'\n\n    class BasePlugin {\n        constructor() {\n            console.log('hello from base plugin')\n        }\n    }\n\n    const pluginLoader = new PluginLoader({\n        BasePlugin,\n        pluginPath: require('path').resolve(__dirname, '..', 'myplugin'),\n    })\n    ```\n\n1. `cd ..`\n\nRun the project:\n\n1. `node myapp/index.js`\n\n### Ecosystem\n\n-   [pluginclerk](https://github.com/bevry/pluginclerk) a project for fetching compatible plugins from the npm registry\n-   [docpad-baseplugin](https://github.com/docpad/docpad-baseplugin) the BasePlugin class that DocPad uses\n-   [docpad-plugintester](https://github.com/docpad/docpad-plugintester) testing helpers for DocPad plugins\n\n<!-- INSTALL/ -->\n\n<h2>Install</h2>\n\n<a href=\"https://npmjs.com\" title=\"npm is a package manager for javascript\"><h3>npm</h3></a>\n<ul>\n<li>Install: <code>npm install --save @bevry/pluginloader</code></li>\n<li>Import: <code>import pkg from ('@bevry/pluginloader')</code></li>\n<li>Require: <code>const pkg = require('@bevry/pluginloader').default</code></li>\n</ul>\n\n<h3><a href=\"https://editions.bevry.me\" title=\"Editions are the best way to produce and consume packages you care about.\">Editions</a></h3>\n\n<p>This package is published with the following editions:</p>\n\n<ul><li><code>@bevry/pluginloader/source/index.ts</code> is <a href=\"https://www.typescriptlang.org/\" title=\"TypeScript is a typed superset of JavaScript that compiles to plain JavaScript. \">TypeScript</a> source code with <a href=\"https://babeljs.io/docs/learn-es2015/#modules\" title=\"ECMAScript Modules\">Import</a> for modules</li>\n<li><code>@bevry/pluginloader</code> aliases <code>@bevry/pluginloader/edition-esnext/index.js</code></li>\n<li><code>@bevry/pluginloader/edition-esnext/index.js</code> is <a href=\"https://www.typescriptlang.org/\" title=\"TypeScript is a typed superset of JavaScript that compiles to plain JavaScript. \">TypeScript</a> compiled against <a href=\"https://en.wikipedia.org/wiki/ECMAScript#ES.Next\" title=\"ECMAScript Next\">ESNext</a> for <a href=\"https://nodejs.org\" title=\"Node.js is a JavaScript runtime built on Chrome's V8 JavaScript engine\">Node.js</a> with <a href=\"https://nodejs.org/dist/latest-v5.x/docs/api/modules.html\" title=\"Node/CJS Modules\">Require</a> for modules</li></ul>\n\n<!-- /INSTALL -->\n\n\n<!-- HISTORY/ -->\n\n<h2>History</h2>\n\n<a href=\"https://github.com/bevry/pluginloader/blob/master/HISTORY.md#files\">Discover the release history by heading on over to the <code>HISTORY.md</code> file.</a>\n\n<!-- /HISTORY -->\n\n\n<!-- CONTRIBUTE/ -->\n\n<h2>Contribute</h2>\n\n<a href=\"https://github.com/bevry/pluginloader/blob/master/CONTRIBUTING.md#files\">Discover how you can contribute by heading on over to the <code>CONTRIBUTING.md</code> file.</a>\n\n<!-- /CONTRIBUTE -->\n\n\n<!-- BACKERS/ -->\n\n<h2>Backers</h2>\n\n<h3>Maintainers</h3>\n\nThese amazing people are maintaining this project:\n\n<ul><li><a href=\"https://balupton.com\">Benjamin Lupton</a> — <a href=\"https://github.com/bevry/pluginloader/commits?author=balupton\" title=\"View the GitHub contributions of Benjamin Lupton on repository bevry/pluginloader\">view contributions</a></li></ul>\n\n<h3>Sponsors</h3>\n\nNo sponsors yet! Will you be the first?\n\n<span class=\"badge-githubsponsors\"><a href=\"https://github.com/sponsors/balupton\" title=\"Donate to this project using GitHub Sponsors\"><img src=\"https://img.shields.io/badge/github-donate-yellow.svg\" alt=\"GitHub Sponsors donate button\" /></a></span>\n<span class=\"badge-patreon\"><a href=\"https://patreon.com/bevry\" title=\"Donate to this project using Patreon\"><img src=\"https://img.shields.io/badge/patreon-donate-yellow.svg\" alt=\"Patreon donate button\" /></a></span>\n<span class=\"badge-flattr\"><a href=\"https://flattr.com/profile/balupton\" title=\"Donate to this project using Flattr\"><img src=\"https://img.shields.io/badge/flattr-donate-yellow.svg\" alt=\"Flattr donate button\" /></a></span>\n<span class=\"badge-liberapay\"><a href=\"https://liberapay.com/bevry\" title=\"Donate to this project using Liberapay\"><img src=\"https://img.shields.io/badge/liberapay-donate-yellow.svg\" alt=\"Liberapay donate button\" /></a></span>\n<span class=\"badge-buymeacoffee\"><a href=\"https://buymeacoffee.com/balupton\" title=\"Donate to this project using Buy Me A Coffee\"><img src=\"https://img.shields.io/badge/buy%20me%20a%20coffee-donate-yellow.svg\" alt=\"Buy Me A Coffee donate button\" /></a></span>\n<span class=\"badge-opencollective\"><a href=\"https://opencollective.com/bevry\" title=\"Donate to this project using Open Collective\"><img src=\"https://img.shields.io/badge/open%20collective-donate-yellow.svg\" alt=\"Open Collective donate button\" /></a></span>\n<span class=\"badge-crypto\"><a href=\"https://bevry.me/crypto\" title=\"Donate to this project using Cryptocurrency\"><img src=\"https://img.shields.io/badge/crypto-donate-yellow.svg\" alt=\"crypto donate button\" /></a></span>\n<span class=\"badge-paypal\"><a href=\"https://bevry.me/paypal\" title=\"Donate to this project using Paypal\"><img src=\"https://img.shields.io/badge/paypal-donate-yellow.svg\" alt=\"PayPal donate button\" /></a></span>\n<span class=\"badge-wishlist\"><a href=\"https://bevry.me/wishlist\" title=\"Buy an item on our wishlist for us\"><img src=\"https://img.shields.io/badge/wishlist-donate-yellow.svg\" alt=\"Wishlist browse button\" /></a></span>\n\n<h3>Contributors</h3>\n\nThese amazing people have contributed code to this project:\n\n<ul><li><a href=\"https://balupton.com\">Benjamin Lupton</a> — <a href=\"https://github.com/bevry/pluginloader/commits?author=balupton\" title=\"View the GitHub contributions of Benjamin Lupton on repository bevry/pluginloader\">view contributions</a></li></ul>\n\n<a href=\"https://github.com/bevry/pluginloader/blob/master/CONTRIBUTING.md#files\">Discover how you can contribute by heading on over to the <code>CONTRIBUTING.md</code> file.</a>\n\n<!-- /BACKERS -->\n\n\n<!-- LICENSE/ -->\n\n<h2>License</h2>\n\nUnless stated otherwise all works are:\n\n<ul><li>Copyright &copy; 2018+ <a href=\"https://balupton.com\">Benjamin Lupton</a></li></ul>\n\nand licensed under:\n\n<ul><li><a href=\"http://spdx.org/licenses/MIT.html\">MIT License</a></li></ul>\n\n<!-- /LICENSE -->\n","readmeFilename":"README.md","_id":"@bevry/pluginloader@4.1.0-next.1590005359.76fe139f6462956b85c5b598de5870933de648a6","_nodeVersion":"14.3.0","_npmVersion":"6.14.5","dist":{"integrity":"sha512-7a8x5Ww6iTGGDy+XhxGOZw2dEzRFkvZieGwjWdTz8kkfsiImDSizfFcehOgRbQuHQYOcr6Z2IHzvuWYubGFwdA==","shasum":"7717c761af7a9e596f786102ead737b4c9d73315","tarball":"https://registry.npmjs.org/@bevry/pluginloader/-/pluginloader-4.1.0-next.1590005359.76fe139f6462956b85c5b598de5870933de648a6.tgz","fileCount":10,"unpackedSize":44484,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJexY5xCRA9TVsSAnZWagAAzL4P/RqnnpzmPF7N0OzH8raN\n5D1gnJ/aZLpyF2F4UG0a/iru4VQzreJzjoT1o4WmWcqiHVqfpNP2dVOP3MuV\nry64MHjbCeAibkyjoWZ1UF66Weg1zxeMTAYtgE8/HnHjshtuf/IklKtvI0p6\nGmojuTq5k7MOR9X/gZO3xXqufINIoY0BJ+11yZWfqWhmtpkXsRxoePy5g1LE\nNdlMibu9CverCbE2uevGKVgy24BmwJd1fywtKjHk+bCEMksE3EAAZssBTUr4\nrYDTNVYXbswyHbrypSwCbne+56QRG/YO1QqpmDRDrWSadpweSwqFadWE5Swi\nPNR/DVWgZa4Bim0m/9mbQzWPHhnB7ExZimRA9/6sADj8GEKdFFEzwtLzOgL3\nv3GoM+Hu9wWxTx5ls0X5OS1nVhf3pw/t8XCFKJRNeKFUIL+HO0spEmzDzksX\nzrogqhNkHXTxDHaJxA65hS3zYSJkB+ca85M+CGO5kfjvHIiw+wEDC+mDf+WF\nEwFQXFHnx1igYRxS9NclYrTJUuFYhhyl58CZ428+A8QBBj64kGPTke9YTUpS\nwNFDm2+UPfRmGoDnEdRlhEymPRj/rMNAlJmv7YU1dyPJVWkj6ItOw+ltUlSc\nKeJb+SEtyLSuhK1JqhyE6bjxTB5UoGPOMQfMjn3IUs37WB4/X53wXQv4KwyE\nUVYM\r\n=1Euc\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBKaa0FZux28mUh7yV2BNTl4sh7I4ttnO4tntiXI3kCoAiBK70NCmMrOzQiDwn/LdARmSXIrfDw459E78vAk0DLwQQ=="}]},"_npmUser":{"name":"bevryme","email":"us@bevry.me"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/pluginloader_4.1.0-next.1590005359.76fe139f6462956b85c5b598de5870933de648a6_1590005361406_0.3157149801970429"},"_hasShrinkwrap":false},"4.1.0":{"name":"@bevry/pluginloader","version":"4.1.0","description":"A class for loading, verifying, and creating plugins. Used by DocPad for years.","homepage":"https://github.com/bevry/pluginloader","license":"MIT","keywords":["bevry","docpad","export-default","loader","node","plugin","plugins","typed","types","typescript"],"badges":{"list":["travisci","npmversion","npmdownloads","daviddm","daviddmdev","---","githubsponsors","patreon","flattr","liberapay","buymeacoffee","opencollective","crypto","paypal","wishlist"],"config":{"githubSponsorsUsername":"balupton","buymeacoffeeUsername":"balupton","cryptoURL":"https://bevry.me/crypto","flattrUsername":"balupton","liberapayUsername":"bevry","opencollectiveUsername":"bevry","patreonUsername":"bevry","paypalURL":"https://bevry.me/paypal","wishlistURL":"https://bevry.me/wishlist","travisTLD":"com","githubUsername":"bevry","githubRepository":"pluginloader","githubSlug":"bevry/pluginloader","npmPackageName":"@bevry/pluginloader"}},"funding":"https://bevry.me/fund","author":{"name":"2018+ Benjamin Lupton","email":"b@lupton.cc","url":"https://balupton.com"},"maintainers":[{"email":"b@lupton.cc","name":"balupton"},{"email":"us@bevry.me","name":"bevryme"},{"email":"sumitrai96@gmail.com","name":"sumitrai"}],"contributors":[{"name":"Benjamin Lupton","email":"b@lupton.cc","url":"https://github.com/balupton"}],"bugs":{"url":"https://github.com/bevry/pluginloader/issues"},"repository":{"type":"git","url":"git+https://github.com/bevry/pluginloader.git"},"engines":{"node":">=10"},"editions":[{"description":"TypeScript source code with Import for modules","directory":"source","entry":"index.ts","tags":["typescript","import"],"engines":false},{"description":"TypeScript compiled against ESNext for Node.js with Require for modules","directory":"edition-esnext","entry":"index.js","tags":["javascript","esnext","require"],"engines":{"node":"10 || 12 || 13 || 14"}}],"types":"./compiled-types/","type":"commonjs","main":"edition-esnext/index.js","dependencies":{"errlop":"^3.0.0","semver":"^7.3.2","typechecker":"^7.0.0"},"devDependencies":{"@bevry/update-contributors":"^1.5.0","@typescript-eslint/eslint-plugin":"^2.34.0","@typescript-eslint/parser":"^2.34.0","assert-helpers":"^6.4.0","eslint":"^7.0.0","eslint-config-bevry":"^3.5.0","eslint-config-prettier":"^6.11.0","eslint-plugin-prettier":"^3.1.3","kava":"^5.1.0","prettier":"^2.0.5","projectz":"^2.1.0","surge":"^0.21.3","typedoc":"^0.17.7","typescript":"^3.9.3","valid-directory":"^1.6.0"},"scripts":{"our:clean":"rm -Rf ./docs ./edition* ./es2015 ./es5 ./out ./.next","our:compile":"npm run our:compile:edition-esnext && npm run our:compile:types","our:compile:edition-esnext":"tsc --module commonjs --target ESNext --outDir ./edition-esnext --project tsconfig.json && test -d edition-esnext/source && ( mv edition-esnext/source edition-temp && rm -Rf edition-esnext && mv edition-temp edition-esnext ) || true","our:compile:types":"tsc --project tsconfig.json --emitDeclarationOnly --declaration --declarationDir ./compiled-types/ --declarationMap","our:deploy":"echo no need for this project","our:meta":"npm run our:meta:contributors && npm run our:meta:docs && npm run our:meta:projectz","our:meta:contributors":"update-contributors","our:meta:docs":"npm run our:meta:docs:typedoc","our:meta:docs:typedoc":"rm -Rf ./docs && typedoc --mode file --exclude '**/+(*test*|node_modules)' --excludeExternals --name \"$npm_package_name\" --readme ./README.md --out ./docs ./source","our:meta:projectz":"projectz compile","our:release":"npm run our:release:prepare && npm run our:release:check-changelog && npm run our:release:check-dirty && npm run our:release:tag && npm run our:release:push","our:release:check-changelog":"cat ./HISTORY.md | grep v$npm_package_version || (echo add a changelog entry for v$npm_package_version && exit -1)","our:release:check-dirty":"git diff --exit-code","our:release:prepare":"npm run our:clean && npm run our:compile && npm run our:test && npm run our:meta","our:release:push":"git push origin master && git push origin --tags","our:release:tag":"export MESSAGE=$(cat ./HISTORY.md | sed -n \"/## v$npm_package_version/,/##/p\" | sed 's/## //' | awk 'NR>1{print buf}{buf = $0}') && test \"$MESSAGE\" || (echo 'proper changelog entry not found' && exit -1) && git tag v$npm_package_version -am \"$MESSAGE\"","our:setup":"npm run our:setup:install","our:setup:install":"npm install","our:test":"npm run our:verify && npm test","our:verify":"npm run our:verify:directory && npm run our:verify:eslint && npm run our:verify:prettier","our:verify:directory":"valid-directory","our:verify:eslint":"eslint --fix --ignore-pattern '**/*.d.ts' --ignore-pattern '**/vendor/' --ignore-pattern '**/node_modules/' --ext .mjs,.js,.jsx,.ts,.tsx ./source","our:verify:prettier":"prettier --write .","test":"node ./edition-esnext/test.js"},"eslintConfig":{"extends":["bevry"]},"prettier":{"semi":false,"singleQuote":true},"gitHead":"76fe139f6462956b85c5b598de5870933de648a6","_id":"@bevry/pluginloader@4.1.0","_nodeVersion":"14.3.0","_npmVersion":"6.14.5","dist":{"integrity":"sha512-QvWBE43AC5nx5yFxmAXRiaxfEYo/ZFeCp1BnWARfu0S9NyW9GUPT7VQhQ7RvpODuFZlhqJ4W2Q3d7dp2Pcmmkw==","shasum":"19425769864eadc96a61c2d22181d8a9acec50cd","tarball":"https://registry.npmjs.org/@bevry/pluginloader/-/pluginloader-4.1.0.tgz","fileCount":10,"unpackedSize":44427,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJexY6+CRA9TVsSAnZWagAA6ooP/j6NDkJCsSPA+ow7wn1G\nIVhmCvmOwUGN3JH8bRSpcHS4qnZPN02esfSivapQmVwq0bohaot42fEtTTRh\nbEh5ooAD9GolDjPxRfu5NLvYtE7EKxOwlLdWowr6O5laaDQu9BugN1z05pt5\nZy1tW6T0RfxiksKEpi5rKI7s2bVoPMCEkF6qS68z7gO41J1ojrovGPKQlmRK\nl0x64usvp9JyFKaDphwHDh7VQoz5U9QeRPUHEsQk4yo46pNm8ppM90yqN6fj\n2AYwtC6VZJFvQA1lv/+U6FtdC+ZOH3mPp2RXRIDcuFZkzNnYDNADMuu1BCK0\nNPSPRc1yczFLvAjJSo47/+JkGQUkEcsYrh5KJLHhlZx1jN6Npj+flNOB8Eta\n7jsEdk2EZocr3DBuhE9uTcG3Dn7cSFd4Ho3inRgAiwnOgzqVAPPadMYup1jb\nGcmano58LOnifnUznpIi9zIjxRYlTyI6tV4DiXQXNNzpdBjFpFCRUy9MIUqX\nII2wIJOMVt5HNJjT5OlBBKlKGBwSz6bi04iGM3V1PA49AwaSoODwTpGLF6HV\nXD/zwWld4S7fXq4fq/fZ+WvflDbkH6pvv/U+ZfZxQpdop1zdzkY6SZDUQOpb\nWwiMLNUfSN5vhDlKCg92uJgMzqS89wuJhYt93rR9dAsbe9EpZCH2QBZwCJnP\n3GKb\r\n=iKzL\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIAh38kXXypntnbWglqurwFusZdi+qGp68JtDkqKSQpioAiAR8/P97MlQ+dUveYp800pTk8614m5ejltfqqJUY6/OCQ=="}]},"_npmUser":{"name":"bevryme","email":"us@bevry.me"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/pluginloader_4.1.0_1590005438108_0.21848833568329384"},"_hasShrinkwrap":false},"4.2.0-next.1590061662.d2dc5858232aabbee10e11b73da890791f4a7b2a":{"name":"@bevry/pluginloader","version":"4.2.0-next.1590061662.d2dc5858232aabbee10e11b73da890791f4a7b2a","description":"A class for loading, verifying, and creating plugins. Used by DocPad for years.","homepage":"https://github.com/bevry/pluginloader","license":"MIT","keywords":["bevry","docpad","export-default","loader","node","plugin","plugins","typed","types","typescript"],"badges":{"list":["travisci","npmversion","npmdownloads","daviddm","daviddmdev","---","githubsponsors","patreon","flattr","liberapay","buymeacoffee","opencollective","crypto","paypal","wishlist"],"config":{"githubSponsorsUsername":"balupton","buymeacoffeeUsername":"balupton","cryptoURL":"https://bevry.me/crypto","flattrUsername":"balupton","liberapayUsername":"bevry","opencollectiveUsername":"bevry","patreonUsername":"bevry","paypalURL":"https://bevry.me/paypal","wishlistURL":"https://bevry.me/wishlist","travisTLD":"com","githubUsername":"bevry","githubRepository":"pluginloader","githubSlug":"bevry/pluginloader","npmPackageName":"@bevry/pluginloader"}},"funding":"https://bevry.me/fund","author":{"name":"2018+ Benjamin Lupton","email":"b@lupton.cc","url":"https://balupton.com"},"maintainers":[{"email":"b@lupton.cc","name":"balupton"},{"email":"us@bevry.me","name":"bevryme"},{"email":"sumitrai96@gmail.com","name":"sumitrai"}],"contributors":[{"name":"Benjamin Lupton","email":"b@lupton.cc","url":"https://github.com/balupton"}],"bugs":{"url":"https://github.com/bevry/pluginloader/issues"},"repository":{"type":"git","url":"git+https://github.com/bevry/pluginloader.git"},"engines":{"node":">=10"},"editions":[{"description":"TypeScript source code with Import for modules","directory":"source","entry":"index.ts","tags":["typescript","import"],"engines":false},{"description":"TypeScript compiled against ESNext for Node.js with Require for modules","directory":"edition-esnext","entry":"index.js","tags":["javascript","esnext","require"],"engines":{"node":"10 || 12 || 13 || 14"}}],"types":"./compiled-types/","type":"commonjs","main":"edition-esnext/index.js","dependencies":{"errlop":"^3.2.0","semver":"^7.3.2","typechecker":"^7.2.0"},"devDependencies":{"@bevry/update-contributors":"^1.6.0","@typescript-eslint/eslint-plugin":"^2.34.0","@typescript-eslint/parser":"^2.34.0","assert-helpers":"^6.5.0","eslint":"^7.0.0","eslint-config-bevry":"^3.6.0","eslint-config-prettier":"^6.11.0","eslint-plugin-prettier":"^3.1.3","kava":"^5.2.0","prettier":"^2.0.5","projectz":"^2.2.0","surge":"^0.21.3","typedoc":"^0.17.7","typescript":"^3.9.3","valid-directory":"^2.0.0"},"scripts":{"our:clean":"rm -Rf ./docs ./edition* ./es2015 ./es5 ./out ./.next","our:compile":"npm run our:compile:edition-esnext && npm run our:compile:types","our:compile:edition-esnext":"tsc --module commonjs --target ESNext --outDir ./edition-esnext --project tsconfig.json && ( test ! -d edition-esnext/source || ( mv edition-esnext/source edition-temp && rm -Rf edition-esnext && mv edition-temp edition-esnext ) )","our:compile:types":"tsc --project tsconfig.json --emitDeclarationOnly --declaration --declarationMap --declarationDir ./compiled-types && ( test ! -d compiled-types/source || ( mv compiled-types/source edition-temp && rm -Rf compiled-types && mv edition-temp compiled-types ) )","our:deploy":"echo no need for this project","our:meta":"npm run our:meta:contributors && npm run our:meta:docs && npm run our:meta:projectz","our:meta:contributors":"update-contributors","our:meta:docs":"npm run our:meta:docs:typedoc","our:meta:docs:typedoc":"rm -Rf ./docs && typedoc --mode file --exclude '**/+(*test*|node_modules)' --excludeExternals --name \"$npm_package_name\" --readme ./README.md --out ./docs ./source","our:meta:projectz":"projectz compile","our:release":"npm run our:release:prepare && npm run our:release:check-changelog && npm run our:release:check-dirty && npm run our:release:tag && npm run our:release:push","our:release:check-changelog":"cat ./HISTORY.md | grep v$npm_package_version || (echo add a changelog entry for v$npm_package_version && exit -1)","our:release:check-dirty":"git diff --exit-code","our:release:prepare":"npm run our:clean && npm run our:compile && npm run our:test && npm run our:meta","our:release:push":"git push origin master && git push origin --tags","our:release:tag":"export MESSAGE=$(cat ./HISTORY.md | sed -n \"/## v$npm_package_version/,/##/p\" | sed 's/## //' | awk 'NR>1{print buf}{buf = $0}') && test \"$MESSAGE\" || (echo 'proper changelog entry not found' && exit -1) && git tag v$npm_package_version -am \"$MESSAGE\"","our:setup":"npm run our:setup:install","our:setup:install":"npm install","our:test":"npm run our:verify && npm test","our:verify":"npm run our:verify:directory && npm run our:verify:eslint && npm run our:verify:prettier","our:verify:directory":"valid-directory","our:verify:eslint":"eslint --fix --ignore-pattern '**/*.d.ts' --ignore-pattern '**/vendor/' --ignore-pattern '**/node_modules/' --ext .mjs,.js,.jsx,.ts,.tsx ./source","our:verify:prettier":"prettier --write .","test":"node ./edition-esnext/test.js"},"eslintConfig":{"extends":["bevry"]},"prettier":{"semi":false,"singleQuote":true},"gitHead":"d2dc5858232aabbee10e11b73da890791f4a7b2a","readme":"<!-- TITLE/ -->\n\n<h1>@bevry/pluginloader</h1>\n\n<!-- /TITLE -->\n\n\n<!-- BADGES/ -->\n\n<span class=\"badge-travisci\"><a href=\"http://travis-ci.com/bevry/pluginloader\" title=\"Check this project's build status on TravisCI\"><img src=\"https://img.shields.io/travis/com/bevry/pluginloader/master.svg\" alt=\"Travis CI Build Status\" /></a></span>\n<span class=\"badge-npmversion\"><a href=\"https://npmjs.org/package/@bevry/pluginloader\" title=\"View this project on NPM\"><img src=\"https://img.shields.io/npm/v/@bevry/pluginloader.svg\" alt=\"NPM version\" /></a></span>\n<span class=\"badge-npmdownloads\"><a href=\"https://npmjs.org/package/@bevry/pluginloader\" title=\"View this project on NPM\"><img src=\"https://img.shields.io/npm/dm/@bevry/pluginloader.svg\" alt=\"NPM downloads\" /></a></span>\n<span class=\"badge-daviddm\"><a href=\"https://david-dm.org/bevry/pluginloader\" title=\"View the status of this project's dependencies on DavidDM\"><img src=\"https://img.shields.io/david/bevry/pluginloader.svg\" alt=\"Dependency Status\" /></a></span>\n<span class=\"badge-daviddmdev\"><a href=\"https://david-dm.org/bevry/pluginloader#info=devDependencies\" title=\"View the status of this project's development dependencies on DavidDM\"><img src=\"https://img.shields.io/david/dev/bevry/pluginloader.svg\" alt=\"Dev Dependency Status\" /></a></span>\n<br class=\"badge-separator\" />\n<span class=\"badge-githubsponsors\"><a href=\"https://github.com/sponsors/balupton\" title=\"Donate to this project using GitHub Sponsors\"><img src=\"https://img.shields.io/badge/github-donate-yellow.svg\" alt=\"GitHub Sponsors donate button\" /></a></span>\n<span class=\"badge-patreon\"><a href=\"https://patreon.com/bevry\" title=\"Donate to this project using Patreon\"><img src=\"https://img.shields.io/badge/patreon-donate-yellow.svg\" alt=\"Patreon donate button\" /></a></span>\n<span class=\"badge-flattr\"><a href=\"https://flattr.com/profile/balupton\" title=\"Donate to this project using Flattr\"><img src=\"https://img.shields.io/badge/flattr-donate-yellow.svg\" alt=\"Flattr donate button\" /></a></span>\n<span class=\"badge-liberapay\"><a href=\"https://liberapay.com/bevry\" title=\"Donate to this project using Liberapay\"><img src=\"https://img.shields.io/badge/liberapay-donate-yellow.svg\" alt=\"Liberapay donate button\" /></a></span>\n<span class=\"badge-buymeacoffee\"><a href=\"https://buymeacoffee.com/balupton\" title=\"Donate to this project using Buy Me A Coffee\"><img src=\"https://img.shields.io/badge/buy%20me%20a%20coffee-donate-yellow.svg\" alt=\"Buy Me A Coffee donate button\" /></a></span>\n<span class=\"badge-opencollective\"><a href=\"https://opencollective.com/bevry\" title=\"Donate to this project using Open Collective\"><img src=\"https://img.shields.io/badge/open%20collective-donate-yellow.svg\" alt=\"Open Collective donate button\" /></a></span>\n<span class=\"badge-crypto\"><a href=\"https://bevry.me/crypto\" title=\"Donate to this project using Cryptocurrency\"><img src=\"https://img.shields.io/badge/crypto-donate-yellow.svg\" alt=\"crypto donate button\" /></a></span>\n<span class=\"badge-paypal\"><a href=\"https://bevry.me/paypal\" title=\"Donate to this project using Paypal\"><img src=\"https://img.shields.io/badge/paypal-donate-yellow.svg\" alt=\"PayPal donate button\" /></a></span>\n<span class=\"badge-wishlist\"><a href=\"https://bevry.me/wishlist\" title=\"Buy an item on our wishlist for us\"><img src=\"https://img.shields.io/badge/wishlist-donate-yellow.svg\" alt=\"Wishlist browse button\" /></a></span>\n\n<!-- /BADGES -->\n\n\n<!-- DESCRIPTION/ -->\n\nA class for loading, verifying, and creating plugins. Used by DocPad for years.\n\n<!-- /DESCRIPTION -->\n\n\n## Usage\n\n[Complete API Documentation.](http://master.pluginloader.bevry.surge.sh/docs/globals.html)\n\n### Basics\n\nCreate your project:\n\n1. `mkdir my-project`\n1. `cd my-project`\n\nCreate your plugin:\n\n1. `mkdir myplugin`\n1. `cd myplugin`\n1. `npm init`\n1. `index.js` to:\n\n    ```javascript\n    module.exports = function (BasePlugin) {\n        return class MyPlugin extends BasePlugin {\n            constructor(...args) {\n                super(...args)\n                console.log('hello from my plugin')\n            }\n        }\n    }\n    ```\n\n1. `cd ..`\n\nCreate your plugin loader:\n\n1. `mkdir myapp`\n1. `cd myapp`\n1. `npm init`\n1. `index.js` to:\n\n    ```javascript\n    import PluginLoader from '@bevry/pluginloader'\n\n    class BasePlugin {\n        constructor() {\n            console.log('hello from base plugin')\n        }\n    }\n\n    const pluginLoader = new PluginLoader({\n        BasePlugin,\n        pluginPath: require('path').resolve(__dirname, '..', 'myplugin'),\n    })\n    ```\n\n1. `cd ..`\n\nRun the project:\n\n1. `node myapp/index.js`\n\n### Ecosystem\n\n-   [pluginclerk](https://github.com/bevry/pluginclerk) a project for fetching compatible plugins from the npm registry\n-   [docpad-baseplugin](https://github.com/docpad/docpad-baseplugin) the BasePlugin class that DocPad uses\n-   [docpad-plugintester](https://github.com/docpad/docpad-plugintester) testing helpers for DocPad plugins\n\n<!-- INSTALL/ -->\n\n<h2>Install</h2>\n\n<a href=\"https://npmjs.com\" title=\"npm is a package manager for javascript\"><h3>npm</h3></a>\n<ul>\n<li>Install: <code>npm install --save @bevry/pluginloader</code></li>\n<li>Import: <code>import pkg from ('@bevry/pluginloader')</code></li>\n<li>Require: <code>const pkg = require('@bevry/pluginloader').default</code></li>\n</ul>\n\n<h3><a href=\"https://editions.bevry.me\" title=\"Editions are the best way to produce and consume packages you care about.\">Editions</a></h3>\n\n<p>This package is published with the following editions:</p>\n\n<ul><li><code>@bevry/pluginloader/source/index.ts</code> is <a href=\"https://www.typescriptlang.org/\" title=\"TypeScript is a typed superset of JavaScript that compiles to plain JavaScript. \">TypeScript</a> source code with <a href=\"https://babeljs.io/docs/learn-es2015/#modules\" title=\"ECMAScript Modules\">Import</a> for modules</li>\n<li><code>@bevry/pluginloader</code> aliases <code>@bevry/pluginloader/edition-esnext/index.js</code></li>\n<li><code>@bevry/pluginloader/edition-esnext/index.js</code> is <a href=\"https://www.typescriptlang.org/\" title=\"TypeScript is a typed superset of JavaScript that compiles to plain JavaScript. \">TypeScript</a> compiled against <a href=\"https://en.wikipedia.org/wiki/ECMAScript#ES.Next\" title=\"ECMAScript Next\">ESNext</a> for <a href=\"https://nodejs.org\" title=\"Node.js is a JavaScript runtime built on Chrome's V8 JavaScript engine\">Node.js</a> with <a href=\"https://nodejs.org/dist/latest-v5.x/docs/api/modules.html\" title=\"Node/CJS Modules\">Require</a> for modules</li></ul>\n\n<!-- /INSTALL -->\n\n\n<!-- HISTORY/ -->\n\n<h2>History</h2>\n\n<a href=\"https://github.com/bevry/pluginloader/blob/master/HISTORY.md#files\">Discover the release history by heading on over to the <code>HISTORY.md</code> file.</a>\n\n<!-- /HISTORY -->\n\n\n<!-- CONTRIBUTE/ -->\n\n<h2>Contribute</h2>\n\n<a href=\"https://github.com/bevry/pluginloader/blob/master/CONTRIBUTING.md#files\">Discover how you can contribute by heading on over to the <code>CONTRIBUTING.md</code> file.</a>\n\n<!-- /CONTRIBUTE -->\n\n\n<!-- BACKERS/ -->\n\n<h2>Backers</h2>\n\n<h3>Maintainers</h3>\n\nThese amazing people are maintaining this project:\n\n<ul><li><a href=\"https://balupton.com\">Benjamin Lupton</a> — <a href=\"https://github.com/bevry/pluginloader/commits?author=balupton\" title=\"View the GitHub contributions of Benjamin Lupton on repository bevry/pluginloader\">view contributions</a></li></ul>\n\n<h3>Sponsors</h3>\n\nNo sponsors yet! Will you be the first?\n\n<span class=\"badge-githubsponsors\"><a href=\"https://github.com/sponsors/balupton\" title=\"Donate to this project using GitHub Sponsors\"><img src=\"https://img.shields.io/badge/github-donate-yellow.svg\" alt=\"GitHub Sponsors donate button\" /></a></span>\n<span class=\"badge-patreon\"><a href=\"https://patreon.com/bevry\" title=\"Donate to this project using Patreon\"><img src=\"https://img.shields.io/badge/patreon-donate-yellow.svg\" alt=\"Patreon donate button\" /></a></span>\n<span class=\"badge-flattr\"><a href=\"https://flattr.com/profile/balupton\" title=\"Donate to this project using Flattr\"><img src=\"https://img.shields.io/badge/flattr-donate-yellow.svg\" alt=\"Flattr donate button\" /></a></span>\n<span class=\"badge-liberapay\"><a href=\"https://liberapay.com/bevry\" title=\"Donate to this project using Liberapay\"><img src=\"https://img.shields.io/badge/liberapay-donate-yellow.svg\" alt=\"Liberapay donate button\" /></a></span>\n<span class=\"badge-buymeacoffee\"><a href=\"https://buymeacoffee.com/balupton\" title=\"Donate to this project using Buy Me A Coffee\"><img src=\"https://img.shields.io/badge/buy%20me%20a%20coffee-donate-yellow.svg\" alt=\"Buy Me A Coffee donate button\" /></a></span>\n<span class=\"badge-opencollective\"><a href=\"https://opencollective.com/bevry\" title=\"Donate to this project using Open Collective\"><img src=\"https://img.shields.io/badge/open%20collective-donate-yellow.svg\" alt=\"Open Collective donate button\" /></a></span>\n<span class=\"badge-crypto\"><a href=\"https://bevry.me/crypto\" title=\"Donate to this project using Cryptocurrency\"><img src=\"https://img.shields.io/badge/crypto-donate-yellow.svg\" alt=\"crypto donate button\" /></a></span>\n<span class=\"badge-paypal\"><a href=\"https://bevry.me/paypal\" title=\"Donate to this project using Paypal\"><img src=\"https://img.shields.io/badge/paypal-donate-yellow.svg\" alt=\"PayPal donate button\" /></a></span>\n<span class=\"badge-wishlist\"><a href=\"https://bevry.me/wishlist\" title=\"Buy an item on our wishlist for us\"><img src=\"https://img.shields.io/badge/wishlist-donate-yellow.svg\" alt=\"Wishlist browse button\" /></a></span>\n\n<h3>Contributors</h3>\n\nThese amazing people have contributed code to this project:\n\n<ul><li><a href=\"https://balupton.com\">Benjamin Lupton</a> — <a href=\"https://github.com/bevry/pluginloader/commits?author=balupton\" title=\"View the GitHub contributions of Benjamin Lupton on repository bevry/pluginloader\">view contributions</a></li></ul>\n\n<a href=\"https://github.com/bevry/pluginloader/blob/master/CONTRIBUTING.md#files\">Discover how you can contribute by heading on over to the <code>CONTRIBUTING.md</code> file.</a>\n\n<!-- /BACKERS -->\n\n\n<!-- LICENSE/ -->\n\n<h2>License</h2>\n\nUnless stated otherwise all works are:\n\n<ul><li>Copyright &copy; 2018+ <a href=\"https://balupton.com\">Benjamin Lupton</a></li></ul>\n\nand licensed under:\n\n<ul><li><a href=\"http://spdx.org/licenses/MIT.html\">MIT License</a></li></ul>\n\n<!-- /LICENSE -->\n","readmeFilename":"README.md","_id":"@bevry/pluginloader@4.2.0-next.1590061662.d2dc5858232aabbee10e11b73da890791f4a7b2a","_nodeVersion":"14.3.0","_npmVersion":"6.14.5","dist":{"integrity":"sha512-q3mu82VXZX3YO+X8CRbZXM92Zq3SS7tmigJQSqWdRILILxoVih9/7zQIS7ukDpBvb3Jy94VciAAl3iTIGmTD7Q==","shasum":"25a9fa6ffa08c280f9851fbc06c464aed2a755da","tarball":"https://registry.npmjs.org/@bevry/pluginloader/-/pluginloader-4.2.0-next.1590061662.d2dc5858232aabbee10e11b73da890791f4a7b2a.tgz","fileCount":10,"unpackedSize":44817,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJexmpfCRA9TVsSAnZWagAAPpQP+wQhcPviPZPnR3tlE5Uk\n3sWqQ2ClTpIPE5/JhOMVpkI7mECIdGpc8l+8zS4aPGF8Zmln3UCP5R6zume3\nAs9Rm7gxPkWpVgd1Dxz9gaiu8q+XrPHwLgUqby24CPCIw1ERkc2KcL4cXgz8\nZ5vPmInNFyjzLN2MyCA8z0sCTqdyS6WwU6SJi3a4cc2zQfpcKLuViCS2flXz\nGLCM0q2OPcuFAgFxwJjw3ba0Ya6/QmOZNbkfmHUlIufNYtza2WmjU5SDHytG\nhmMMoP58p1vyD5C5zCPbktnJY6bHd0UnPkvTNkrQ2h/nPk1zCALxPLDS9ecq\nSvxHt4S9TRYxDUo7obZcRFdEogrVOKW4KwsrSIy4g3jbXgRnvdpUfckB0a+C\neaEJz6X9hct8Ja/NeZTVWV+EcnkTeeryap/n/uxPJKDGnCFE0Df+VxGM0rNw\nku8ARQSi8ac9n0vHzBcGg5Nj99mHwz8wylLM3BTu2WEzpXJjUWYBPe3VZLcY\njEPpVuz8S4XLketpnTtMMwBsDn3u+z84Y2lZeaR3PWqXvUCOE0e0L9DgMLa8\noKvX/ZJDBjvzb79mPBsJpwz6806HQqP6cHKIdprACqdzX8HFtxYfWYEmQb0o\nlwOo+jGDb4YTefawFTUdnh+2sw9zzDMDrROl+0Z7aLFmGQ2W23LIZH76Ebi8\nux1E\r\n=Y9Ei\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDG3LAklM0/kwqrCaFC7kpa1cMdmg6wvZxlVLSOXfNy7AIgZgIg8zg8uRgyUVxoUIzP+6Kt09ou5joVuufZN1XE+6M="}]},"_npmUser":{"name":"bevryme","email":"us@bevry.me"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/pluginloader_4.2.0-next.1590061662.d2dc5858232aabbee10e11b73da890791f4a7b2a_1590061663303_0.20344156510279188"},"_hasShrinkwrap":false},"4.2.0":{"name":"@bevry/pluginloader","version":"4.2.0","description":"A class for loading, verifying, and creating plugins. Used by DocPad for years.","homepage":"https://github.com/bevry/pluginloader","license":"MIT","keywords":["bevry","docpad","export-default","loader","node","plugin","plugins","typed","types","typescript"],"badges":{"list":["travisci","npmversion","npmdownloads","daviddm","daviddmdev","---","githubsponsors","patreon","flattr","liberapay","buymeacoffee","opencollective","crypto","paypal","wishlist"],"config":{"githubSponsorsUsername":"balupton","buymeacoffeeUsername":"balupton","cryptoURL":"https://bevry.me/crypto","flattrUsername":"balupton","liberapayUsername":"bevry","opencollectiveUsername":"bevry","patreonUsername":"bevry","paypalURL":"https://bevry.me/paypal","wishlistURL":"https://bevry.me/wishlist","travisTLD":"com","githubUsername":"bevry","githubRepository":"pluginloader","githubSlug":"bevry/pluginloader","npmPackageName":"@bevry/pluginloader"}},"funding":"https://bevry.me/fund","author":{"name":"2018+ Benjamin Lupton","email":"b@lupton.cc","url":"https://balupton.com"},"maintainers":[{"email":"b@lupton.cc","name":"balupton"},{"email":"us@bevry.me","name":"bevryme"},{"email":"sumitrai96@gmail.com","name":"sumitrai"}],"contributors":[{"name":"Benjamin Lupton","email":"b@lupton.cc","url":"https://github.com/balupton"}],"bugs":{"url":"https://github.com/bevry/pluginloader/issues"},"repository":{"type":"git","url":"git+https://github.com/bevry/pluginloader.git"},"engines":{"node":">=10"},"editions":[{"description":"TypeScript source code with Import for modules","directory":"source","entry":"index.ts","tags":["typescript","import"],"engines":false},{"description":"TypeScript compiled against ESNext for Node.js with Require for modules","directory":"edition-esnext","entry":"index.js","tags":["javascript","esnext","require"],"engines":{"node":"10 || 12 || 13 || 14"}}],"types":"./compiled-types/","type":"commonjs","main":"edition-esnext/index.js","dependencies":{"errlop":"^3.2.0","semver":"^7.3.2","typechecker":"^7.2.0"},"devDependencies":{"@bevry/update-contributors":"^1.6.0","@typescript-eslint/eslint-plugin":"^2.34.0","@typescript-eslint/parser":"^2.34.0","assert-helpers":"^6.5.0","eslint":"^7.0.0","eslint-config-bevry":"^3.6.0","eslint-config-prettier":"^6.11.0","eslint-plugin-prettier":"^3.1.3","kava":"^5.2.0","prettier":"^2.0.5","projectz":"^2.2.0","surge":"^0.21.3","typedoc":"^0.17.7","typescript":"^3.9.3","valid-directory":"^2.0.0"},"scripts":{"our:clean":"rm -Rf ./docs ./edition* ./es2015 ./es5 ./out ./.next","our:compile":"npm run our:compile:edition-esnext && npm run our:compile:types","our:compile:edition-esnext":"tsc --module commonjs --target ESNext --outDir ./edition-esnext --project tsconfig.json && ( test ! -d edition-esnext/source || ( mv edition-esnext/source edition-temp && rm -Rf edition-esnext && mv edition-temp edition-esnext ) )","our:compile:types":"tsc --project tsconfig.json --emitDeclarationOnly --declaration --declarationMap --declarationDir ./compiled-types && ( test ! -d compiled-types/source || ( mv compiled-types/source edition-temp && rm -Rf compiled-types && mv edition-temp compiled-types ) )","our:deploy":"echo no need for this project","our:meta":"npm run our:meta:contributors && npm run our:meta:docs && npm run our:meta:projectz","our:meta:contributors":"update-contributors","our:meta:docs":"npm run our:meta:docs:typedoc","our:meta:docs:typedoc":"rm -Rf ./docs && typedoc --mode file --exclude '**/+(*test*|node_modules)' --excludeExternals --name \"$npm_package_name\" --readme ./README.md --out ./docs ./source","our:meta:projectz":"projectz compile","our:release":"npm run our:release:prepare && npm run our:release:check-changelog && npm run our:release:check-dirty && npm run our:release:tag && npm run our:release:push","our:release:check-changelog":"cat ./HISTORY.md | grep v$npm_package_version || (echo add a changelog entry for v$npm_package_version && exit -1)","our:release:check-dirty":"git diff --exit-code","our:release:prepare":"npm run our:clean && npm run our:compile && npm run our:test && npm run our:meta","our:release:push":"git push origin master && git push origin --tags","our:release:tag":"export MESSAGE=$(cat ./HISTORY.md | sed -n \"/## v$npm_package_version/,/##/p\" | sed 's/## //' | awk 'NR>1{print buf}{buf = $0}') && test \"$MESSAGE\" || (echo 'proper changelog entry not found' && exit -1) && git tag v$npm_package_version -am \"$MESSAGE\"","our:setup":"npm run our:setup:install","our:setup:install":"npm install","our:test":"npm run our:verify && npm test","our:verify":"npm run our:verify:directory && npm run our:verify:eslint && npm run our:verify:prettier","our:verify:directory":"valid-directory","our:verify:eslint":"eslint --fix --ignore-pattern '**/*.d.ts' --ignore-pattern '**/vendor/' --ignore-pattern '**/node_modules/' --ext .mjs,.js,.jsx,.ts,.tsx ./source","our:verify:prettier":"prettier --write .","test":"node ./edition-esnext/test.js"},"eslintConfig":{"extends":["bevry"]},"prettier":{"semi":false,"singleQuote":true},"gitHead":"d2dc5858232aabbee10e11b73da890791f4a7b2a","_id":"@bevry/pluginloader@4.2.0","_nodeVersion":"14.3.0","_npmVersion":"6.14.5","dist":{"integrity":"sha512-52SynTP6o6GQkdI/MLaRYDbFnx4vRJYeDsvwhLV/kLZ+lY5XVHPYWBHOuRzRLbJlQyKnKiO1rDtLOv4bPwG92A==","shasum":"d9fd3b8915351cd9bd5cb9a45bbb7b160e04a0d1","tarball":"https://registry.npmjs.org/@bevry/pluginloader/-/pluginloader-4.2.0.tgz","fileCount":10,"unpackedSize":44760,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJexmqnCRA9TVsSAnZWagAAezEP/17Q5OhcCS9mVNRPxwkr\nqw0HgeXRjUsM+srDia/Pp9ZAEHnrjTuW3c7fQC2n325wA8monm+zuzbbQwUW\njMgrDZ6Z6AqUcLAiFx3vyxUmUUfIvTpITmeafETZXUiCF290VQxNVuwNsnfp\n9iFsD8GX6Tp6JInLU48Vvrn3UxysAgFDgDdAO7+g1P4oXPdkPyccM6qiN7oX\nSwYpTPjeoZNqqm57rzEHFtbxVWTRQFpRgaPsbJbAJPiD+k0bQEWOAedld5kj\nBFQVXno2swZjxsW2cIDm4vHie4VDpDCOG12IHctPHgZNHLegsAyj5A4NYk+/\ndQt8cS0TEveKCEcX4AahTw9jMciRyx7MWtEzabAhBLls0Apj0xfrNJgFilr/\nzHIG2DE2uwfPnPD9EJHSXOS9G+syaN+wbWvACh2IMpoyzgPu/lIIeJLg6IeJ\nU5pqResTybH/PQl9lEi7w9u2z09A9+0ldBJnZKDViS8KJ3ZbTiMgek5+5+PN\ngnGj6LbRM3XXNY6l+vB+EkKjXQLRxLFroEWjf7gX+9Pv2peA+h0PoXNtJo//\neuxuE0Y9Ek4ydBMzmfQEQJlvnhMGe1wqpDG7c5MdeeyaGJHi1DQZ/hbqdDo3\n5igXtx2nT425+4g4NiGPpvN3UN7ZyzdiKJCJfHGbHStiyt3GyHWsgBWTVpAG\nonVJ\r\n=mtga\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICweBGJ6gRSBOMTvNKv2DfbhOpSoVdyGUTZLe1l/33caAiEAjCFW8GGmbV0RMOz6EQVt9ZGcbIHoCvK6jqdB0hkkLng="}]},"_npmUser":{"name":"bevryme","email":"us@bevry.me"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/pluginloader_4.2.0_1590061735478_0.7203301446417754"},"_hasShrinkwrap":false},"4.3.0-next.1590079583.72581ebc07fe5da547081ad5e387e889059448df":{"name":"@bevry/pluginloader","version":"4.3.0-next.1590079583.72581ebc07fe5da547081ad5e387e889059448df","description":"A class for loading, verifying, and creating plugins. Used by DocPad for years.","homepage":"https://github.com/bevry/pluginloader","license":"MIT","keywords":["bevry","docpad","export-default","loader","node","plugin","plugins","typed","types","typescript"],"badges":{"list":["travisci","npmversion","npmdownloads","daviddm","daviddmdev","---","githubsponsors","patreon","flattr","liberapay","buymeacoffee","opencollective","crypto","paypal","wishlist"],"config":{"githubSponsorsUsername":"balupton","buymeacoffeeUsername":"balupton","cryptoURL":"https://bevry.me/crypto","flattrUsername":"balupton","liberapayUsername":"bevry","opencollectiveUsername":"bevry","patreonUsername":"bevry","paypalURL":"https://bevry.me/paypal","wishlistURL":"https://bevry.me/wishlist","travisTLD":"com","githubUsername":"bevry","githubRepository":"pluginloader","githubSlug":"bevry/pluginloader","npmPackageName":"@bevry/pluginloader"}},"funding":"https://bevry.me/fund","author":{"name":"2018+ Benjamin Lupton","email":"b@lupton.cc","url":"https://balupton.com"},"maintainers":[{"email":"b@lupton.cc","name":"balupton"},{"email":"us@bevry.me","name":"bevryme"},{"email":"sumitrai96@gmail.com","name":"sumitrai"}],"contributors":[{"name":"Benjamin Lupton","email":"b@lupton.cc","url":"https://github.com/balupton"}],"bugs":{"url":"https://github.com/bevry/pluginloader/issues"},"repository":{"type":"git","url":"git+https://github.com/bevry/pluginloader.git"},"engines":{"node":">=10"},"editions":[{"description":"TypeScript source code with Import for modules","directory":"source","entry":"index.ts","tags":["typescript","import"],"engines":false},{"description":"TypeScript compiled against ESNext for Node.js with Require for modules","directory":"edition-esnext","entry":"index.js","tags":["javascript","esnext","require"],"engines":{"node":"10 || 12 || 13 || 14"}}],"types":"./compiled-types/","type":"commonjs","main":"edition-esnext/index.js","dependencies":{"errlop":"^3.3.0","semver":"^7.3.2","typechecker":"^7.3.0"},"devDependencies":{"@bevry/update-contributors":"^1.7.0","@typescript-eslint/eslint-plugin":"^2.34.0","@typescript-eslint/parser":"^2.34.0","assert-helpers":"^6.6.0","eslint":"^7.0.0","eslint-config-bevry":"^3.7.0","eslint-config-prettier":"^6.11.0","eslint-plugin-prettier":"^3.1.3","kava":"^5.3.0","prettier":"^2.0.5","projectz":"^2.3.0","surge":"^0.21.3","typedoc":"^0.17.7","typescript":"^3.9.3","valid-directory":"^2.1.0"},"scripts":{"our:clean":"rm -Rf ./docs ./edition* ./es2015 ./es5 ./out ./.next","our:compile":"npm run our:compile:edition-esnext && npm run our:compile:types","our:compile:edition-esnext":"tsc --module commonjs --target ESNext --outDir ./edition-esnext --project tsconfig.json && ( test ! -d edition-esnext/source || ( mv edition-esnext/source edition-temp && rm -Rf edition-esnext && mv edition-temp edition-esnext ) )","our:compile:types":"tsc --project tsconfig.json --emitDeclarationOnly --declaration --declarationMap --declarationDir ./compiled-types && ( test ! -d compiled-types/source || ( mv compiled-types/source edition-temp && rm -Rf compiled-types && mv edition-temp compiled-types ) )","our:deploy":"echo no need for this project","our:meta":"npm run our:meta:contributors && npm run our:meta:docs && npm run our:meta:projectz","our:meta:contributors":"update-contributors","our:meta:docs":"npm run our:meta:docs:typedoc","our:meta:docs:typedoc":"rm -Rf ./docs && typedoc --mode file --exclude '**/+(*test*|node_modules)' --excludeExternals --name \"$npm_package_name\" --readme ./README.md --out ./docs ./source","our:meta:projectz":"projectz compile","our:release":"npm run our:release:prepare && npm run our:release:check-changelog && npm run our:release:check-dirty && npm run our:release:tag && npm run our:release:push","our:release:check-changelog":"cat ./HISTORY.md | grep v$npm_package_version || (echo add a changelog entry for v$npm_package_version && exit -1)","our:release:check-dirty":"git diff --exit-code","our:release:prepare":"npm run our:clean && npm run our:compile && npm run our:test && npm run our:meta","our:release:push":"git push origin master && git push origin --tags","our:release:tag":"export MESSAGE=$(cat ./HISTORY.md | sed -n \"/## v$npm_package_version/,/##/p\" | sed 's/## //' | awk 'NR>1{print buf}{buf = $0}') && test \"$MESSAGE\" || (echo 'proper changelog entry not found' && exit -1) && git tag v$npm_package_version -am \"$MESSAGE\"","our:setup":"npm run our:setup:install","our:setup:install":"npm install","our:test":"npm run our:verify && npm test","our:verify":"npm run our:verify:directory && npm run our:verify:eslint && npm run our:verify:prettier","our:verify:directory":"valid-directory","our:verify:eslint":"eslint --fix --ignore-pattern '**/*.d.ts' --ignore-pattern '**/vendor/' --ignore-pattern '**/node_modules/' --ext .mjs,.js,.jsx,.ts,.tsx ./source","our:verify:prettier":"prettier --write .","test":"node ./edition-esnext/test.js"},"eslintConfig":{"extends":["bevry"]},"prettier":{"semi":false,"singleQuote":true},"gitHead":"72581ebc07fe5da547081ad5e387e889059448df","readme":"<!-- TITLE/ -->\n\n<h1>@bevry/pluginloader</h1>\n\n<!-- /TITLE -->\n\n\n<!-- BADGES/ -->\n\n<span class=\"badge-travisci\"><a href=\"http://travis-ci.com/bevry/pluginloader\" title=\"Check this project's build status on TravisCI\"><img src=\"https://img.shields.io/travis/com/bevry/pluginloader/master.svg\" alt=\"Travis CI Build Status\" /></a></span>\n<span class=\"badge-npmversion\"><a href=\"https://npmjs.org/package/@bevry/pluginloader\" title=\"View this project on NPM\"><img src=\"https://img.shields.io/npm/v/@bevry/pluginloader.svg\" alt=\"NPM version\" /></a></span>\n<span class=\"badge-npmdownloads\"><a href=\"https://npmjs.org/package/@bevry/pluginloader\" title=\"View this project on NPM\"><img src=\"https://img.shields.io/npm/dm/@bevry/pluginloader.svg\" alt=\"NPM downloads\" /></a></span>\n<span class=\"badge-daviddm\"><a href=\"https://david-dm.org/bevry/pluginloader\" title=\"View the status of this project's dependencies on DavidDM\"><img src=\"https://img.shields.io/david/bevry/pluginloader.svg\" alt=\"Dependency Status\" /></a></span>\n<span class=\"badge-daviddmdev\"><a href=\"https://david-dm.org/bevry/pluginloader#info=devDependencies\" title=\"View the status of this project's development dependencies on DavidDM\"><img src=\"https://img.shields.io/david/dev/bevry/pluginloader.svg\" alt=\"Dev Dependency Status\" /></a></span>\n<br class=\"badge-separator\" />\n<span class=\"badge-githubsponsors\"><a href=\"https://github.com/sponsors/balupton\" title=\"Donate to this project using GitHub Sponsors\"><img src=\"https://img.shields.io/badge/github-donate-yellow.svg\" alt=\"GitHub Sponsors donate button\" /></a></span>\n<span class=\"badge-patreon\"><a href=\"https://patreon.com/bevry\" title=\"Donate to this project using Patreon\"><img src=\"https://img.shields.io/badge/patreon-donate-yellow.svg\" alt=\"Patreon donate button\" /></a></span>\n<span class=\"badge-flattr\"><a href=\"https://flattr.com/profile/balupton\" title=\"Donate to this project using Flattr\"><img src=\"https://img.shields.io/badge/flattr-donate-yellow.svg\" alt=\"Flattr donate button\" /></a></span>\n<span class=\"badge-liberapay\"><a href=\"https://liberapay.com/bevry\" title=\"Donate to this project using Liberapay\"><img src=\"https://img.shields.io/badge/liberapay-donate-yellow.svg\" alt=\"Liberapay donate button\" /></a></span>\n<span class=\"badge-buymeacoffee\"><a href=\"https://buymeacoffee.com/balupton\" title=\"Donate to this project using Buy Me A Coffee\"><img src=\"https://img.shields.io/badge/buy%20me%20a%20coffee-donate-yellow.svg\" alt=\"Buy Me A Coffee donate button\" /></a></span>\n<span class=\"badge-opencollective\"><a href=\"https://opencollective.com/bevry\" title=\"Donate to this project using Open Collective\"><img src=\"https://img.shields.io/badge/open%20collective-donate-yellow.svg\" alt=\"Open Collective donate button\" /></a></span>\n<span class=\"badge-crypto\"><a href=\"https://bevry.me/crypto\" title=\"Donate to this project using Cryptocurrency\"><img src=\"https://img.shields.io/badge/crypto-donate-yellow.svg\" alt=\"crypto donate button\" /></a></span>\n<span class=\"badge-paypal\"><a href=\"https://bevry.me/paypal\" title=\"Donate to this project using Paypal\"><img src=\"https://img.shields.io/badge/paypal-donate-yellow.svg\" alt=\"PayPal donate button\" /></a></span>\n<span class=\"badge-wishlist\"><a href=\"https://bevry.me/wishlist\" title=\"Buy an item on our wishlist for us\"><img src=\"https://img.shields.io/badge/wishlist-donate-yellow.svg\" alt=\"Wishlist browse button\" /></a></span>\n\n<!-- /BADGES -->\n\n\n<!-- DESCRIPTION/ -->\n\nA class for loading, verifying, and creating plugins. Used by DocPad for years.\n\n<!-- /DESCRIPTION -->\n\n\n## Usage\n\n[Complete API Documentation.](http://master.pluginloader.bevry.surge.sh/docs/globals.html)\n\n### Basics\n\nCreate your project:\n\n1. `mkdir my-project`\n1. `cd my-project`\n\nCreate your plugin:\n\n1. `mkdir myplugin`\n1. `cd myplugin`\n1. `npm init`\n1. `index.js` to:\n\n    ```javascript\n    module.exports = function (BasePlugin) {\n        return class MyPlugin extends BasePlugin {\n            constructor(...args) {\n                super(...args)\n                console.log('hello from my plugin')\n            }\n        }\n    }\n    ```\n\n1. `cd ..`\n\nCreate your plugin loader:\n\n1. `mkdir myapp`\n1. `cd myapp`\n1. `npm init`\n1. `index.js` to:\n\n    ```javascript\n    import PluginLoader from '@bevry/pluginloader'\n\n    class BasePlugin {\n        constructor() {\n            console.log('hello from base plugin')\n        }\n    }\n\n    const pluginLoader = new PluginLoader({\n        BasePlugin,\n        pluginPath: require('path').resolve(__dirname, '..', 'myplugin'),\n    })\n    ```\n\n1. `cd ..`\n\nRun the project:\n\n1. `node myapp/index.js`\n\n### Ecosystem\n\n-   [pluginclerk](https://github.com/bevry/pluginclerk) a project for fetching compatible plugins from the npm registry\n-   [docpad-baseplugin](https://github.com/docpad/docpad-baseplugin) the BasePlugin class that DocPad uses\n-   [docpad-plugintester](https://github.com/docpad/docpad-plugintester) testing helpers for DocPad plugins\n\n<!-- INSTALL/ -->\n\n<h2>Install</h2>\n\n<a href=\"https://npmjs.com\" title=\"npm is a package manager for javascript\"><h3>npm</h3></a>\n<ul>\n<li>Install: <code>npm install --save @bevry/pluginloader</code></li>\n<li>Import: <code>import pkg from ('@bevry/pluginloader')</code></li>\n<li>Require: <code>const pkg = require('@bevry/pluginloader').default</code></li>\n</ul>\n\n<h3><a href=\"https://editions.bevry.me\" title=\"Editions are the best way to produce and consume packages you care about.\">Editions</a></h3>\n\n<p>This package is published with the following editions:</p>\n\n<ul><li><code>@bevry/pluginloader/source/index.ts</code> is <a href=\"https://www.typescriptlang.org/\" title=\"TypeScript is a typed superset of JavaScript that compiles to plain JavaScript. \">TypeScript</a> source code with <a href=\"https://babeljs.io/docs/learn-es2015/#modules\" title=\"ECMAScript Modules\">Import</a> for modules</li>\n<li><code>@bevry/pluginloader</code> aliases <code>@bevry/pluginloader/edition-esnext/index.js</code></li>\n<li><code>@bevry/pluginloader/edition-esnext/index.js</code> is <a href=\"https://www.typescriptlang.org/\" title=\"TypeScript is a typed superset of JavaScript that compiles to plain JavaScript. \">TypeScript</a> compiled against <a href=\"https://en.wikipedia.org/wiki/ECMAScript#ES.Next\" title=\"ECMAScript Next\">ESNext</a> for <a href=\"https://nodejs.org\" title=\"Node.js is a JavaScript runtime built on Chrome's V8 JavaScript engine\">Node.js</a> with <a href=\"https://nodejs.org/dist/latest-v5.x/docs/api/modules.html\" title=\"Node/CJS Modules\">Require</a> for modules</li></ul>\n\n<!-- /INSTALL -->\n\n\n<!-- HISTORY/ -->\n\n<h2>History</h2>\n\n<a href=\"https://github.com/bevry/pluginloader/blob/master/HISTORY.md#files\">Discover the release history by heading on over to the <code>HISTORY.md</code> file.</a>\n\n<!-- /HISTORY -->\n\n\n<!-- CONTRIBUTE/ -->\n\n<h2>Contribute</h2>\n\n<a href=\"https://github.com/bevry/pluginloader/blob/master/CONTRIBUTING.md#files\">Discover how you can contribute by heading on over to the <code>CONTRIBUTING.md</code> file.</a>\n\n<!-- /CONTRIBUTE -->\n\n\n<!-- BACKERS/ -->\n\n<h2>Backers</h2>\n\n<h3>Maintainers</h3>\n\nThese amazing people are maintaining this project:\n\n<ul><li><a href=\"https://balupton.com\">Benjamin Lupton</a> — <a href=\"https://github.com/bevry/pluginloader/commits?author=balupton\" title=\"View the GitHub contributions of Benjamin Lupton on repository bevry/pluginloader\">view contributions</a></li></ul>\n\n<h3>Sponsors</h3>\n\nNo sponsors yet! Will you be the first?\n\n<span class=\"badge-githubsponsors\"><a href=\"https://github.com/sponsors/balupton\" title=\"Donate to this project using GitHub Sponsors\"><img src=\"https://img.shields.io/badge/github-donate-yellow.svg\" alt=\"GitHub Sponsors donate button\" /></a></span>\n<span class=\"badge-patreon\"><a href=\"https://patreon.com/bevry\" title=\"Donate to this project using Patreon\"><img src=\"https://img.shields.io/badge/patreon-donate-yellow.svg\" alt=\"Patreon donate button\" /></a></span>\n<span class=\"badge-flattr\"><a href=\"https://flattr.com/profile/balupton\" title=\"Donate to this project using Flattr\"><img src=\"https://img.shields.io/badge/flattr-donate-yellow.svg\" alt=\"Flattr donate button\" /></a></span>\n<span class=\"badge-liberapay\"><a href=\"https://liberapay.com/bevry\" title=\"Donate to this project using Liberapay\"><img src=\"https://img.shields.io/badge/liberapay-donate-yellow.svg\" alt=\"Liberapay donate button\" /></a></span>\n<span class=\"badge-buymeacoffee\"><a href=\"https://buymeacoffee.com/balupton\" title=\"Donate to this project using Buy Me A Coffee\"><img src=\"https://img.shields.io/badge/buy%20me%20a%20coffee-donate-yellow.svg\" alt=\"Buy Me A Coffee donate button\" /></a></span>\n<span class=\"badge-opencollective\"><a href=\"https://opencollective.com/bevry\" title=\"Donate to this project using Open Collective\"><img src=\"https://img.shields.io/badge/open%20collective-donate-yellow.svg\" alt=\"Open Collective donate button\" /></a></span>\n<span class=\"badge-crypto\"><a href=\"https://bevry.me/crypto\" title=\"Donate to this project using Cryptocurrency\"><img src=\"https://img.shields.io/badge/crypto-donate-yellow.svg\" alt=\"crypto donate button\" /></a></span>\n<span class=\"badge-paypal\"><a href=\"https://bevry.me/paypal\" title=\"Donate to this project using Paypal\"><img src=\"https://img.shields.io/badge/paypal-donate-yellow.svg\" alt=\"PayPal donate button\" /></a></span>\n<span class=\"badge-wishlist\"><a href=\"https://bevry.me/wishlist\" title=\"Buy an item on our wishlist for us\"><img src=\"https://img.shields.io/badge/wishlist-donate-yellow.svg\" alt=\"Wishlist browse button\" /></a></span>\n\n<h3>Contributors</h3>\n\nThese amazing people have contributed code to this project:\n\n<ul><li><a href=\"https://balupton.com\">Benjamin Lupton</a> — <a href=\"https://github.com/bevry/pluginloader/commits?author=balupton\" title=\"View the GitHub contributions of Benjamin Lupton on repository bevry/pluginloader\">view contributions</a></li></ul>\n\n<a href=\"https://github.com/bevry/pluginloader/blob/master/CONTRIBUTING.md#files\">Discover how you can contribute by heading on over to the <code>CONTRIBUTING.md</code> file.</a>\n\n<!-- /BACKERS -->\n\n\n<!-- LICENSE/ -->\n\n<h2>License</h2>\n\nUnless stated otherwise all works are:\n\n<ul><li>Copyright &copy; 2018+ <a href=\"https://balupton.com\">Benjamin Lupton</a></li></ul>\n\nand licensed under:\n\n<ul><li><a href=\"http://spdx.org/licenses/MIT.html\">MIT License</a></li></ul>\n\n<!-- /LICENSE -->\n","readmeFilename":"README.md","_id":"@bevry/pluginloader@4.3.0-next.1590079583.72581ebc07fe5da547081ad5e387e889059448df","_nodeVersion":"14.3.0","_npmVersion":"6.14.5","dist":{"integrity":"sha512-M5h/daw23toBa79roVZUSczn3LBlfzhAV4fnmsM9rpvgmMZJBcioGddi1ZCAT2UWfBHfPbcbXzTrew8GdCa95w==","shasum":"23cbdf1131359d7d171a93b1aa102906329ed37f","tarball":"https://registry.npmjs.org/@bevry/pluginloader/-/pluginloader-4.3.0-next.1590079583.72581ebc07fe5da547081ad5e387e889059448df.tgz","fileCount":10,"unpackedSize":45010,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJexrBhCRA9TVsSAnZWagAAmdIQAIlYA3FA+J0iiiNZ4Ybn\nT2b1pHkQPj/5pJsd5eqTcN934/sfpGY5e2VF/0h6ltV3nTuwLwjikwQ1YTfk\nr9pDKdzAv6cac5xRtgdH8RYv7pxBGOdq5U0EAQsXI7x+z9RKk46ngr/zjfwq\nplASl7wRaYVeWDA3Xstaisni4q/KP+vraWjiEPqB+ARCiONCQ/ltZphl32Qo\nm1kqKK4H65DvCoeP67FRxCar5cwbZRw+i9LUVIyrKSbf/bk+6cJle/LkrSFl\njzL4d8tzdeWaaGz7XBv0v4WAHBQfswV/opbBrV1QfnY5ePLOC0ahipdF+3/O\nG425E3F7iK0BbDmTx3PpdUlZkM7n8HySBsy8fVjUKpCNGNCfTsMIK7MqBCIO\nenlfzTyfDw1UMfUgkAVmY45BrQIBBkUXYdCY5s0NWEcH2qfky2mVgfSXG0y8\nDCF15q2tYKYzxsCU7HMRiBMeTEQHhXSAFd+Dz4st/OyeWjMeOJmccz2xcuFc\n7DDARZNv0548jzNffE1nWUITx1p4Vp8eg/HsIcyJ7herJgZvEoXeAHbb6nB+\nBir2xGyjqpY2NPezf5jBU0ThkFqndeJNqVW/i7bIohXiwK9Pfu9u8oTNUhDt\nEhvIKOqC8DATy8TOFmr9GApwO2ytWMSyyOIjKsAs78cZ+ql4ElIRaMu6pW6F\nO/c/\r\n=oVbt\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAuXJlDLraJyHO0Ln461lFvn4/oF3UIeFeEDgIaMTt6nAiEAsdugTTxKKQfXTf0LGE5qe5ZLeLwfPRIayqGvQECQ7S8="}]},"_npmUser":{"name":"bevryme","email":"us@bevry.me"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/pluginloader_4.3.0-next.1590079583.72581ebc07fe5da547081ad5e387e889059448df_1590079584982_0.23855149904430317"},"_hasShrinkwrap":false},"4.3.0":{"name":"@bevry/pluginloader","version":"4.3.0","description":"A class for loading, verifying, and creating plugins. Used by DocPad for years.","homepage":"https://github.com/bevry/pluginloader","license":"MIT","keywords":["bevry","docpad","export-default","loader","node","plugin","plugins","typed","types","typescript"],"badges":{"list":["travisci","npmversion","npmdownloads","daviddm","daviddmdev","---","githubsponsors","patreon","flattr","liberapay","buymeacoffee","opencollective","crypto","paypal","wishlist"],"config":{"githubSponsorsUsername":"balupton","buymeacoffeeUsername":"balupton","cryptoURL":"https://bevry.me/crypto","flattrUsername":"balupton","liberapayUsername":"bevry","opencollectiveUsername":"bevry","patreonUsername":"bevry","paypalURL":"https://bevry.me/paypal","wishlistURL":"https://bevry.me/wishlist","travisTLD":"com","githubUsername":"bevry","githubRepository":"pluginloader","githubSlug":"bevry/pluginloader","npmPackageName":"@bevry/pluginloader"}},"funding":"https://bevry.me/fund","author":{"name":"2018+ Benjamin Lupton","email":"b@lupton.cc","url":"https://balupton.com"},"maintainers":[{"email":"b@lupton.cc","name":"balupton"},{"email":"us@bevry.me","name":"bevryme"},{"email":"sumitrai96@gmail.com","name":"sumitrai"}],"contributors":[{"name":"Benjamin Lupton","email":"b@lupton.cc","url":"https://github.com/balupton"}],"bugs":{"url":"https://github.com/bevry/pluginloader/issues"},"repository":{"type":"git","url":"git+https://github.com/bevry/pluginloader.git"},"engines":{"node":">=10"},"editions":[{"description":"TypeScript source code with Import for modules","directory":"source","entry":"index.ts","tags":["typescript","import"],"engines":false},{"description":"TypeScript compiled against ESNext for Node.js with Require for modules","directory":"edition-esnext","entry":"index.js","tags":["javascript","esnext","require"],"engines":{"node":"10 || 12 || 13 || 14"}}],"types":"./compiled-types/","type":"commonjs","main":"edition-esnext/index.js","dependencies":{"errlop":"^3.3.0","semver":"^7.3.2","typechecker":"^7.3.0"},"devDependencies":{"@bevry/update-contributors":"^1.7.0","@typescript-eslint/eslint-plugin":"^2.34.0","@typescript-eslint/parser":"^2.34.0","assert-helpers":"^6.6.0","eslint":"^7.0.0","eslint-config-bevry":"^3.7.0","eslint-config-prettier":"^6.11.0","eslint-plugin-prettier":"^3.1.3","kava":"^5.3.0","prettier":"^2.0.5","projectz":"^2.3.0","surge":"^0.21.3","typedoc":"^0.17.7","typescript":"^3.9.3","valid-directory":"^2.1.0"},"scripts":{"our:clean":"rm -Rf ./docs ./edition* ./es2015 ./es5 ./out ./.next","our:compile":"npm run our:compile:edition-esnext && npm run our:compile:types","our:compile:edition-esnext":"tsc --module commonjs --target ESNext --outDir ./edition-esnext --project tsconfig.json && ( test ! -d edition-esnext/source || ( mv edition-esnext/source edition-temp && rm -Rf edition-esnext && mv edition-temp edition-esnext ) )","our:compile:types":"tsc --project tsconfig.json --emitDeclarationOnly --declaration --declarationMap --declarationDir ./compiled-types && ( test ! -d compiled-types/source || ( mv compiled-types/source edition-temp && rm -Rf compiled-types && mv edition-temp compiled-types ) )","our:deploy":"echo no need for this project","our:meta":"npm run our:meta:contributors && npm run our:meta:docs && npm run our:meta:projectz","our:meta:contributors":"update-contributors","our:meta:docs":"npm run our:meta:docs:typedoc","our:meta:docs:typedoc":"rm -Rf ./docs && typedoc --mode file --exclude '**/+(*test*|node_modules)' --excludeExternals --name \"$npm_package_name\" --readme ./README.md --out ./docs ./source","our:meta:projectz":"projectz compile","our:release":"npm run our:release:prepare && npm run our:release:check-changelog && npm run our:release:check-dirty && npm run our:release:tag && npm run our:release:push","our:release:check-changelog":"cat ./HISTORY.md | grep v$npm_package_version || (echo add a changelog entry for v$npm_package_version && exit -1)","our:release:check-dirty":"git diff --exit-code","our:release:prepare":"npm run our:clean && npm run our:compile && npm run our:test && npm run our:meta","our:release:push":"git push origin master && git push origin --tags","our:release:tag":"export MESSAGE=$(cat ./HISTORY.md | sed -n \"/## v$npm_package_version/,/##/p\" | sed 's/## //' | awk 'NR>1{print buf}{buf = $0}') && test \"$MESSAGE\" || (echo 'proper changelog entry not found' && exit -1) && git tag v$npm_package_version -am \"$MESSAGE\"","our:setup":"npm run our:setup:install","our:setup:install":"npm install","our:test":"npm run our:verify && npm test","our:verify":"npm run our:verify:directory && npm run our:verify:eslint && npm run our:verify:prettier","our:verify:directory":"valid-directory","our:verify:eslint":"eslint --fix --ignore-pattern '**/*.d.ts' --ignore-pattern '**/vendor/' --ignore-pattern '**/node_modules/' --ext .mjs,.js,.jsx,.ts,.tsx ./source","our:verify:prettier":"prettier --write .","test":"node ./edition-esnext/test.js"},"eslintConfig":{"extends":["bevry"]},"prettier":{"semi":false,"singleQuote":true},"gitHead":"72581ebc07fe5da547081ad5e387e889059448df","_id":"@bevry/pluginloader@4.3.0","_nodeVersion":"14.3.0","_npmVersion":"6.14.5","dist":{"integrity":"sha512-YTIfczVgH5yU6aFPBD77hTuYdbmKTV9OjxNIL/D5yJW3fUg+mIaPwnoaMoukiZDjmyzPt380fVdED+jvfXBaHg==","shasum":"4ca56a80b03c616dcf7d7da062a3b52e3a5a8818","tarball":"https://registry.npmjs.org/@bevry/pluginloader/-/pluginloader-4.3.0.tgz","fileCount":10,"unpackedSize":44953,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJexrCkCRA9TVsSAnZWagAA1sIP/RdTF9/aw6vAuQTojQbC\n+esOLj+3gZA3zXqn0iJ/YtRIpQKKW+wlumGemnHrl7wrY99NYCo0eiAtFbXd\nSEbJL8doLxyWuayJa7ks4lZH6igu68VQgesono6boalABK//wJDTUtFy9L9x\nrSV7n7/bV6DPcspbHLThavzNQXtkGDo6VelWKnTVSEFFDbca6aVt5GPW82Ha\nMCgAs0KIUeSM75lBNAfqNm+hVtDMGT+7tTwmHFJ7tPrsQ6atreghs6lSoGY3\nx/ptRzOlztvEvYwBTMaIwlVk2Rfr5Iwv05VIoIIzLkBPozVkA99mVmsqkVRK\n4cjicj7P/Lftfl4fS+CUdkjiaB9LM7u/3tq7jcJlZg8gz6OCn/69yWFUY78f\nySO5/YrBowjMrXkCAm4xkYg1zd45/jKN61Z4V1/2IMX/lTq6RDJmnWp3NLGK\nLqu/1weHxx3j7viE3iSIVEE0fK2nOpnd0wY9Zhc7+h9wPLSI1xHr0xjCIkLL\n54fMAqHXBWhIEeCqunWJyW3Ra4SGnHvKJDBG4L18VkzE3K/uFDmtf8XIOYHz\nqxWRObpSRTfShsXVexRwE908825/QUri6H1LWVqVKV6NuR0K+oNsrfj3gcKW\nA/Z3a8epth8sv0+dQPlWnUOWC/Mw9Z1rQ8il2NnLElQfnuioFVGPFEjQVlnY\nxJu1\r\n=24pi\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIAyK4OYBLtXtzztFDJTwN9bRigtcLeAXvTOLHd94jNswAiBNUxfyKvaSwZ6sx3y19w/IDTg93+gqgNFbbcJudH8u7g=="}]},"_npmUser":{"name":"bevryme","email":"us@bevry.me"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/pluginloader_4.3.0_1590079652186_0.680569267633264"},"_hasShrinkwrap":false},"4.4.0-next.1591784384.40b70a637dea8300a5bc8256781024522a65f6c7":{"name":"@bevry/pluginloader","version":"4.4.0-next.1591784384.40b70a637dea8300a5bc8256781024522a65f6c7","description":"A class for loading, verifying, and creating plugins. Used by DocPad for years.","homepage":"https://github.com/bevry/pluginloader","license":"MIT","keywords":["bevry","docpad","export-default","loader","node","plugin","plugins","typed","types","typescript"],"badges":{"list":["travisci","npmversion","npmdownloads","daviddm","daviddmdev","---","githubsponsors","patreon","flattr","liberapay","buymeacoffee","opencollective","crypto","paypal","wishlist"],"config":{"githubSponsorsUsername":"balupton","buymeacoffeeUsername":"balupton","cryptoURL":"https://bevry.me/crypto","flattrUsername":"balupton","liberapayUsername":"bevry","opencollectiveUsername":"bevry","patreonUsername":"bevry","paypalURL":"https://bevry.me/paypal","wishlistURL":"https://bevry.me/wishlist","travisTLD":"com","githubUsername":"bevry","githubRepository":"pluginloader","githubSlug":"bevry/pluginloader","npmPackageName":"@bevry/pluginloader"}},"funding":"https://bevry.me/fund","author":{"name":"2018+ Benjamin Lupton","email":"b@lupton.cc","url":"https://balupton.com"},"maintainers":[{"email":"b@lupton.cc","name":"balupton"},{"email":"us@bevry.me","name":"bevryme"},{"email":"sumitrai96@gmail.com","name":"sumitrai"}],"contributors":[{"name":"Benjamin Lupton","email":"b@lupton.cc","url":"https://github.com/balupton"}],"bugs":{"url":"https://github.com/bevry/pluginloader/issues"},"repository":{"type":"git","url":"git+https://github.com/bevry/pluginloader.git"},"engines":{"node":">=10"},"editions":[{"description":"TypeScript source code with Import for modules","directory":"source","entry":"index.ts","tags":["typescript","import"],"engines":false},{"description":"TypeScript compiled against ESNext for Node.js with Require for modules","directory":"edition-esnext","entry":"index.js","tags":["javascript","esnext","require"],"engines":{"node":"10 || 12 || 13 || 14"}}],"types":"./compiled-types/","type":"commonjs","main":"edition-esnext/index.js","dependencies":{"errlop":"^3.5.0","semver":"^7.3.2","typechecker":"^7.4.0"},"devDependencies":{"@bevry/update-contributors":"^1.8.0","@typescript-eslint/eslint-plugin":"^3.2.0","@typescript-eslint/parser":"^3.2.0","assert-helpers":"^6.7.0","eslint":"^7.2.0","eslint-config-bevry":"^3.8.0","eslint-config-prettier":"^6.11.0","eslint-plugin-prettier":"^3.1.3","kava":"^5.4.0","make-deno-edition":"^0.2.2","prettier":"^2.0.5","projectz":"^2.5.0","surge":"^0.21.3","typedoc":"^0.17.7","typescript":"^3.9.5","valid-directory":"^2.2.0"},"scripts":{"our:clean":"rm -Rf ./docs ./edition* ./es2015 ./es5 ./out ./.next","our:compile":"npm run our:compile:deno && npm run our:compile:edition-esnext && npm run our:compile:types","our:compile:deno":"make-deno-edition --attempt","our:compile:edition-esnext":"tsc --module commonjs --target ESNext --outDir ./edition-esnext --project tsconfig.json && ( test ! -d edition-esnext/source || ( mv edition-esnext/source edition-temp && rm -Rf edition-esnext && mv edition-temp edition-esnext ) )","our:compile:types":"tsc --project tsconfig.json --emitDeclarationOnly --declaration --declarationMap --declarationDir ./compiled-types && ( test ! -d compiled-types/source || ( mv compiled-types/source edition-temp && rm -Rf compiled-types && mv edition-temp compiled-types ) )","our:deploy":"echo no need for this project","our:meta":"npm run our:meta:contributors && npm run our:meta:docs && npm run our:meta:projectz","our:meta:contributors":"update-contributors","our:meta:docs":"npm run our:meta:docs:typedoc","our:meta:docs:typedoc":"rm -Rf ./docs && typedoc --mode file --exclude '**/+(*test*|node_modules)' --excludeExternals --name \"$npm_package_name\" --readme ./README.md --out ./docs ./source","our:meta:projectz":"projectz compile","our:release":"npm run our:release:prepare && npm run our:release:check-changelog && npm run our:release:check-dirty && npm run our:release:tag && npm run our:release:push","our:release:check-changelog":"cat ./HISTORY.md | grep v$npm_package_version || (echo add a changelog entry for v$npm_package_version && exit -1)","our:release:check-dirty":"git diff --exit-code","our:release:prepare":"npm run our:clean && npm run our:compile && npm run our:test && npm run our:meta","our:release:push":"git push origin master && git push origin --tags","our:release:tag":"export MESSAGE=$(cat ./HISTORY.md | sed -n \"/## v$npm_package_version/,/##/p\" | sed 's/## //' | awk 'NR>1{print buf}{buf = $0}') && test \"$MESSAGE\" || (echo 'proper changelog entry not found' && exit -1) && git tag v$npm_package_version -am \"$MESSAGE\"","our:setup":"npm run our:setup:install","our:setup:install":"npm install","our:test":"npm run our:verify && npm test","our:verify":"npm run our:verify:directory && npm run our:verify:eslint && npm run our:verify:prettier","our:verify:directory":"valid-directory","our:verify:eslint":"eslint --fix --ignore-pattern '**/*.d.ts' --ignore-pattern '**/vendor/' --ignore-pattern '**/node_modules/' --ext .mjs,.js,.jsx,.ts,.tsx ./source","our:verify:prettier":"prettier --write .","test":"node ./edition-esnext/test.js"},"eslintConfig":{"extends":["bevry"]},"prettier":{"semi":false,"singleQuote":true},"gitHead":"40b70a637dea8300a5bc8256781024522a65f6c7","readme":"<!-- TITLE/ -->\n\n<h1>@bevry/pluginloader</h1>\n\n<!-- /TITLE -->\n\n\n<!-- BADGES/ -->\n\n<span class=\"badge-travisci\"><a href=\"http://travis-ci.com/bevry/pluginloader\" title=\"Check this project's build status on TravisCI\"><img src=\"https://img.shields.io/travis/com/bevry/pluginloader/master.svg\" alt=\"Travis CI Build Status\" /></a></span>\n<span class=\"badge-npmversion\"><a href=\"https://npmjs.org/package/@bevry/pluginloader\" title=\"View this project on NPM\"><img src=\"https://img.shields.io/npm/v/@bevry/pluginloader.svg\" alt=\"NPM version\" /></a></span>\n<span class=\"badge-npmdownloads\"><a href=\"https://npmjs.org/package/@bevry/pluginloader\" title=\"View this project on NPM\"><img src=\"https://img.shields.io/npm/dm/@bevry/pluginloader.svg\" alt=\"NPM downloads\" /></a></span>\n<span class=\"badge-daviddm\"><a href=\"https://david-dm.org/bevry/pluginloader\" title=\"View the status of this project's dependencies on DavidDM\"><img src=\"https://img.shields.io/david/bevry/pluginloader.svg\" alt=\"Dependency Status\" /></a></span>\n<span class=\"badge-daviddmdev\"><a href=\"https://david-dm.org/bevry/pluginloader#info=devDependencies\" title=\"View the status of this project's development dependencies on DavidDM\"><img src=\"https://img.shields.io/david/dev/bevry/pluginloader.svg\" alt=\"Dev Dependency Status\" /></a></span>\n<br class=\"badge-separator\" />\n<span class=\"badge-githubsponsors\"><a href=\"https://github.com/sponsors/balupton\" title=\"Donate to this project using GitHub Sponsors\"><img src=\"https://img.shields.io/badge/github-donate-yellow.svg\" alt=\"GitHub Sponsors donate button\" /></a></span>\n<span class=\"badge-patreon\"><a href=\"https://patreon.com/bevry\" title=\"Donate to this project using Patreon\"><img src=\"https://img.shields.io/badge/patreon-donate-yellow.svg\" alt=\"Patreon donate button\" /></a></span>\n<span class=\"badge-flattr\"><a href=\"https://flattr.com/profile/balupton\" title=\"Donate to this project using Flattr\"><img src=\"https://img.shields.io/badge/flattr-donate-yellow.svg\" alt=\"Flattr donate button\" /></a></span>\n<span class=\"badge-liberapay\"><a href=\"https://liberapay.com/bevry\" title=\"Donate to this project using Liberapay\"><img src=\"https://img.shields.io/badge/liberapay-donate-yellow.svg\" alt=\"Liberapay donate button\" /></a></span>\n<span class=\"badge-buymeacoffee\"><a href=\"https://buymeacoffee.com/balupton\" title=\"Donate to this project using Buy Me A Coffee\"><img src=\"https://img.shields.io/badge/buy%20me%20a%20coffee-donate-yellow.svg\" alt=\"Buy Me A Coffee donate button\" /></a></span>\n<span class=\"badge-opencollective\"><a href=\"https://opencollective.com/bevry\" title=\"Donate to this project using Open Collective\"><img src=\"https://img.shields.io/badge/open%20collective-donate-yellow.svg\" alt=\"Open Collective donate button\" /></a></span>\n<span class=\"badge-crypto\"><a href=\"https://bevry.me/crypto\" title=\"Donate to this project using Cryptocurrency\"><img src=\"https://img.shields.io/badge/crypto-donate-yellow.svg\" alt=\"crypto donate button\" /></a></span>\n<span class=\"badge-paypal\"><a href=\"https://bevry.me/paypal\" title=\"Donate to this project using Paypal\"><img src=\"https://img.shields.io/badge/paypal-donate-yellow.svg\" alt=\"PayPal donate button\" /></a></span>\n<span class=\"badge-wishlist\"><a href=\"https://bevry.me/wishlist\" title=\"Buy an item on our wishlist for us\"><img src=\"https://img.shields.io/badge/wishlist-donate-yellow.svg\" alt=\"Wishlist browse button\" /></a></span>\n\n<!-- /BADGES -->\n\n\n<!-- DESCRIPTION/ -->\n\nA class for loading, verifying, and creating plugins. Used by DocPad for years.\n\n<!-- /DESCRIPTION -->\n\n\n## Usage\n\n[Complete API Documentation.](http://master.pluginloader.bevry.surge.sh/docs/globals.html)\n\n### Basics\n\nCreate your project:\n\n1. `mkdir my-project`\n1. `cd my-project`\n\nCreate your plugin:\n\n1. `mkdir myplugin`\n1. `cd myplugin`\n1. `npm init`\n1. `index.js` to:\n\n    ```javascript\n    module.exports = function (BasePlugin) {\n        return class MyPlugin extends BasePlugin {\n            constructor(...args) {\n                super(...args)\n                console.log('hello from my plugin')\n            }\n        }\n    }\n    ```\n\n1. `cd ..`\n\nCreate your plugin loader:\n\n1. `mkdir myapp`\n1. `cd myapp`\n1. `npm init`\n1. `index.js` to:\n\n    ```javascript\n    import PluginLoader from '@bevry/pluginloader'\n\n    class BasePlugin {\n        constructor() {\n            console.log('hello from base plugin')\n        }\n    }\n\n    const pluginLoader = new PluginLoader({\n        BasePlugin,\n        pluginPath: require('path').resolve(__dirname, '..', 'myplugin'),\n    })\n    ```\n\n1. `cd ..`\n\nRun the project:\n\n1. `node myapp/index.js`\n\n### Ecosystem\n\n-   [pluginclerk](https://github.com/bevry/pluginclerk) a project for fetching compatible plugins from the npm registry\n-   [docpad-baseplugin](https://github.com/docpad/docpad-baseplugin) the BasePlugin class that DocPad uses\n-   [docpad-plugintester](https://github.com/docpad/docpad-plugintester) testing helpers for DocPad plugins\n\n<!-- INSTALL/ -->\n\n<h2>Install</h2>\n\n<a href=\"https://npmjs.com\" title=\"npm is a package manager for javascript\"><h3>npm</h3></a>\n<ul>\n<li>Install: <code>npm install --save @bevry/pluginloader</code></li>\n<li>Import: <code>import pkg from ('@bevry/pluginloader')</code></li>\n<li>Require: <code>const pkg = require('@bevry/pluginloader').default</code></li>\n</ul>\n\n<h3><a href=\"https://editions.bevry.me\" title=\"Editions are the best way to produce and consume packages you care about.\">Editions</a></h3>\n\n<p>This package is published with the following editions:</p>\n\n<ul><li><code>@bevry/pluginloader/source/index.ts</code> is <a href=\"https://www.typescriptlang.org/\" title=\"TypeScript is a typed superset of JavaScript that compiles to plain JavaScript. \">TypeScript</a> source code with <a href=\"https://babeljs.io/docs/learn-es2015/#modules\" title=\"ECMAScript Modules\">Import</a> for modules</li>\n<li><code>@bevry/pluginloader</code> aliases <code>@bevry/pluginloader/edition-esnext/index.js</code></li>\n<li><code>@bevry/pluginloader/edition-esnext/index.js</code> is <a href=\"https://www.typescriptlang.org/\" title=\"TypeScript is a typed superset of JavaScript that compiles to plain JavaScript. \">TypeScript</a> compiled against <a href=\"https://en.wikipedia.org/wiki/ECMAScript#ES.Next\" title=\"ECMAScript Next\">ESNext</a> for <a href=\"https://nodejs.org\" title=\"Node.js is a JavaScript runtime built on Chrome's V8 JavaScript engine\">Node.js</a> with <a href=\"https://nodejs.org/dist/latest-v5.x/docs/api/modules.html\" title=\"Node/CJS Modules\">Require</a> for modules</li></ul>\n\n<!-- /INSTALL -->\n\n\n<!-- HISTORY/ -->\n\n<h2>History</h2>\n\n<a href=\"https://github.com/bevry/pluginloader/blob/master/HISTORY.md#files\">Discover the release history by heading on over to the <code>HISTORY.md</code> file.</a>\n\n<!-- /HISTORY -->\n\n\n<!-- CONTRIBUTE/ -->\n\n<h2>Contribute</h2>\n\n<a href=\"https://github.com/bevry/pluginloader/blob/master/CONTRIBUTING.md#files\">Discover how you can contribute by heading on over to the <code>CONTRIBUTING.md</code> file.</a>\n\n<!-- /CONTRIBUTE -->\n\n\n<!-- BACKERS/ -->\n\n<h2>Backers</h2>\n\n<h3>Maintainers</h3>\n\nThese amazing people are maintaining this project:\n\n<ul><li><a href=\"https://balupton.com\">Benjamin Lupton</a> — <a href=\"https://github.com/bevry/pluginloader/commits?author=balupton\" title=\"View the GitHub contributions of Benjamin Lupton on repository bevry/pluginloader\">view contributions</a></li></ul>\n\n<h3>Sponsors</h3>\n\nNo sponsors yet! Will you be the first?\n\n<span class=\"badge-githubsponsors\"><a href=\"https://github.com/sponsors/balupton\" title=\"Donate to this project using GitHub Sponsors\"><img src=\"https://img.shields.io/badge/github-donate-yellow.svg\" alt=\"GitHub Sponsors donate button\" /></a></span>\n<span class=\"badge-patreon\"><a href=\"https://patreon.com/bevry\" title=\"Donate to this project using Patreon\"><img src=\"https://img.shields.io/badge/patreon-donate-yellow.svg\" alt=\"Patreon donate button\" /></a></span>\n<span class=\"badge-flattr\"><a href=\"https://flattr.com/profile/balupton\" title=\"Donate to this project using Flattr\"><img src=\"https://img.shields.io/badge/flattr-donate-yellow.svg\" alt=\"Flattr donate button\" /></a></span>\n<span class=\"badge-liberapay\"><a href=\"https://liberapay.com/bevry\" title=\"Donate to this project using Liberapay\"><img src=\"https://img.shields.io/badge/liberapay-donate-yellow.svg\" alt=\"Liberapay donate button\" /></a></span>\n<span class=\"badge-buymeacoffee\"><a href=\"https://buymeacoffee.com/balupton\" title=\"Donate to this project using Buy Me A Coffee\"><img src=\"https://img.shields.io/badge/buy%20me%20a%20coffee-donate-yellow.svg\" alt=\"Buy Me A Coffee donate button\" /></a></span>\n<span class=\"badge-opencollective\"><a href=\"https://opencollective.com/bevry\" title=\"Donate to this project using Open Collective\"><img src=\"https://img.shields.io/badge/open%20collective-donate-yellow.svg\" alt=\"Open Collective donate button\" /></a></span>\n<span class=\"badge-crypto\"><a href=\"https://bevry.me/crypto\" title=\"Donate to this project using Cryptocurrency\"><img src=\"https://img.shields.io/badge/crypto-donate-yellow.svg\" alt=\"crypto donate button\" /></a></span>\n<span class=\"badge-paypal\"><a href=\"https://bevry.me/paypal\" title=\"Donate to this project using Paypal\"><img src=\"https://img.shields.io/badge/paypal-donate-yellow.svg\" alt=\"PayPal donate button\" /></a></span>\n<span class=\"badge-wishlist\"><a href=\"https://bevry.me/wishlist\" title=\"Buy an item on our wishlist for us\"><img src=\"https://img.shields.io/badge/wishlist-donate-yellow.svg\" alt=\"Wishlist browse button\" /></a></span>\n\n<h3>Contributors</h3>\n\nThese amazing people have contributed code to this project:\n\n<ul><li><a href=\"https://balupton.com\">Benjamin Lupton</a> — <a href=\"https://github.com/bevry/pluginloader/commits?author=balupton\" title=\"View the GitHub contributions of Benjamin Lupton on repository bevry/pluginloader\">view contributions</a></li></ul>\n\n<a href=\"https://github.com/bevry/pluginloader/blob/master/CONTRIBUTING.md#files\">Discover how you can contribute by heading on over to the <code>CONTRIBUTING.md</code> file.</a>\n\n<!-- /BACKERS -->\n\n\n<!-- LICENSE/ -->\n\n<h2>License</h2>\n\nUnless stated otherwise all works are:\n\n<ul><li>Copyright &copy; 2018+ <a href=\"https://balupton.com\">Benjamin Lupton</a></li></ul>\n\nand licensed under:\n\n<ul><li><a href=\"http://spdx.org/licenses/MIT.html\">MIT License</a></li></ul>\n\n<!-- /LICENSE -->\n","readmeFilename":"README.md","_id":"@bevry/pluginloader@4.4.0-next.1591784384.40b70a637dea8300a5bc8256781024522a65f6c7","_nodeVersion":"14.4.0","_npmVersion":"6.14.5","dist":{"integrity":"sha512-EW8CnleUY1Mo3SUFsqdlcSNDtDNoZZMhV0Qi151rlx9tg3K07iO/5EItJ2/NXtksEy+e/N3q6PCXae236REamg==","shasum":"5248f93e7712548d74705cda5aeb073765283a8b","tarball":"https://registry.npmjs.org/@bevry/pluginloader/-/pluginloader-4.4.0-next.1591784384.40b70a637dea8300a5bc8256781024522a65f6c7.tgz","fileCount":10,"unpackedSize":45344,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe4LPCCRA9TVsSAnZWagAAbkoP/ifvsI0NLmufzxDyC+au\nZbwAcixuA/n5ac3p/gQtLhEAEnmu0wt6nm/oyO+9hIheqjEKsI0zbfRNxb3q\n0YCqnwQ2JpYb2BUtrv2/5lnPBExAfd1KwwF8WzY8PcXnocLpoOGUr3oN9r3E\nl7pyMRn2UeoPExtX5KmIibtHGjWn8v8ga4kGwlR0+qCnwiCP8x/6bxVCMhik\nnUeQprcgouPENxjT+8/Yhe5BiOwpc+WeaXHilu6571fQVVfO37+wOQk7uUtF\nFQ5ZG6BfPQQdg8HBU42V5PNa1IE/UsbjenRoUAEmA13n7vI1HQBEPoSYdruD\nhqSP/1OAVmbxNiRn9lfZB8yST1dGeemeJb7sydwCv8URs1NzaKuicBKa9ywR\nyF8zEvLFN3XOR25TmeMvvMf91r89kXwf5/iVIAigj1xx9KRe9GvtueVVUedK\no2XwDRlDQ1BrBIPqLYy2P5jZvXq4wsrFxMUWklgCdClzcvCxJUT4q86V5Ugy\nCssHiV5OdIxyc7OiKF1ozSpKC/Aus8g9vM6gr4UYUaqadZFKFyBhU7x8G9ys\nJfn+g7GJvLWfX804xQs/sXgQyhZgKws4tZW/SuJn+QdQQoCG4QbOULwILeA+\nXaWGNIptTMz/SXc43RP2BZSCPvBxJoYnblv4ddqOQOHKKh0+jS9uhsDTsH/L\n48ux\r\n=2Bcq\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCUjuRd186iuVs5+FYEYvx5LnGOw8Hq7QoTeAmb9Z8IQgIgYLie1dq0cl7S9p7FOodGONvRELrnSLRom2cFIpkkj/g="}]},"_npmUser":{"name":"bevryme","email":"us@bevry.me"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/pluginloader_4.4.0-next.1591784384.40b70a637dea8300a5bc8256781024522a65f6c7_1591784386028_0.05334800977795151"},"_hasShrinkwrap":false},"4.4.0":{"name":"@bevry/pluginloader","version":"4.4.0","description":"A class for loading, verifying, and creating plugins. Used by DocPad for years.","homepage":"https://github.com/bevry/pluginloader","license":"MIT","keywords":["bevry","docpad","export-default","loader","node","plugin","plugins","typed","types","typescript"],"badges":{"list":["travisci","npmversion","npmdownloads","daviddm","daviddmdev","---","githubsponsors","patreon","flattr","liberapay","buymeacoffee","opencollective","crypto","paypal","wishlist"],"config":{"githubSponsorsUsername":"balupton","buymeacoffeeUsername":"balupton","cryptoURL":"https://bevry.me/crypto","flattrUsername":"balupton","liberapayUsername":"bevry","opencollectiveUsername":"bevry","patreonUsername":"bevry","paypalURL":"https://bevry.me/paypal","wishlistURL":"https://bevry.me/wishlist","travisTLD":"com","githubUsername":"bevry","githubRepository":"pluginloader","githubSlug":"bevry/pluginloader","npmPackageName":"@bevry/pluginloader"}},"funding":"https://bevry.me/fund","author":{"name":"2018+ Benjamin Lupton","email":"b@lupton.cc","url":"https://balupton.com"},"maintainers":[{"email":"b@lupton.cc","name":"balupton"},{"email":"us@bevry.me","name":"bevryme"},{"email":"sumitrai96@gmail.com","name":"sumitrai"}],"contributors":[{"name":"Benjamin Lupton","email":"b@lupton.cc","url":"https://github.com/balupton"}],"bugs":{"url":"https://github.com/bevry/pluginloader/issues"},"repository":{"type":"git","url":"git+https://github.com/bevry/pluginloader.git"},"engines":{"node":">=10"},"editions":[{"description":"TypeScript source code with Import for modules","directory":"source","entry":"index.ts","tags":["typescript","import"],"engines":false},{"description":"TypeScript compiled against ESNext for Node.js with Require for modules","directory":"edition-esnext","entry":"index.js","tags":["javascript","esnext","require"],"engines":{"node":"10 || 12 || 13 || 14"}}],"types":"./compiled-types/","type":"commonjs","main":"edition-esnext/index.js","dependencies":{"errlop":"^3.5.0","semver":"^7.3.2","typechecker":"^7.4.0"},"devDependencies":{"@bevry/update-contributors":"^1.8.0","@typescript-eslint/eslint-plugin":"^3.2.0","@typescript-eslint/parser":"^3.2.0","assert-helpers":"^6.7.0","eslint":"^7.2.0","eslint-config-bevry":"^3.8.0","eslint-config-prettier":"^6.11.0","eslint-plugin-prettier":"^3.1.3","kava":"^5.4.0","make-deno-edition":"^0.2.2","prettier":"^2.0.5","projectz":"^2.5.0","surge":"^0.21.3","typedoc":"^0.17.7","typescript":"^3.9.5","valid-directory":"^2.2.0"},"scripts":{"our:clean":"rm -Rf ./docs ./edition* ./es2015 ./es5 ./out ./.next","our:compile":"npm run our:compile:deno && npm run our:compile:edition-esnext && npm run our:compile:types","our:compile:deno":"make-deno-edition --attempt","our:compile:edition-esnext":"tsc --module commonjs --target ESNext --outDir ./edition-esnext --project tsconfig.json && ( test ! -d edition-esnext/source || ( mv edition-esnext/source edition-temp && rm -Rf edition-esnext && mv edition-temp edition-esnext ) )","our:compile:types":"tsc --project tsconfig.json --emitDeclarationOnly --declaration --declarationMap --declarationDir ./compiled-types && ( test ! -d compiled-types/source || ( mv compiled-types/source edition-temp && rm -Rf compiled-types && mv edition-temp compiled-types ) )","our:deploy":"echo no need for this project","our:meta":"npm run our:meta:contributors && npm run our:meta:docs && npm run our:meta:projectz","our:meta:contributors":"update-contributors","our:meta:docs":"npm run our:meta:docs:typedoc","our:meta:docs:typedoc":"rm -Rf ./docs && typedoc --mode file --exclude '**/+(*test*|node_modules)' --excludeExternals --name \"$npm_package_name\" --readme ./README.md --out ./docs ./source","our:meta:projectz":"projectz compile","our:release":"npm run our:release:prepare && npm run our:release:check-changelog && npm run our:release:check-dirty && npm run our:release:tag && npm run our:release:push","our:release:check-changelog":"cat ./HISTORY.md | grep v$npm_package_version || (echo add a changelog entry for v$npm_package_version && exit -1)","our:release:check-dirty":"git diff --exit-code","our:release:prepare":"npm run our:clean && npm run our:compile && npm run our:test && npm run our:meta","our:release:push":"git push origin master && git push origin --tags","our:release:tag":"export MESSAGE=$(cat ./HISTORY.md | sed -n \"/## v$npm_package_version/,/##/p\" | sed 's/## //' | awk 'NR>1{print buf}{buf = $0}') && test \"$MESSAGE\" || (echo 'proper changelog entry not found' && exit -1) && git tag v$npm_package_version -am \"$MESSAGE\"","our:setup":"npm run our:setup:install","our:setup:install":"npm install","our:test":"npm run our:verify && npm test","our:verify":"npm run our:verify:directory && npm run our:verify:eslint && npm run our:verify:prettier","our:verify:directory":"valid-directory","our:verify:eslint":"eslint --fix --ignore-pattern '**/*.d.ts' --ignore-pattern '**/vendor/' --ignore-pattern '**/node_modules/' --ext .mjs,.js,.jsx,.ts,.tsx ./source","our:verify:prettier":"prettier --write .","test":"node ./edition-esnext/test.js"},"eslintConfig":{"extends":["bevry"]},"prettier":{"semi":false,"singleQuote":true},"gitHead":"40b70a637dea8300a5bc8256781024522a65f6c7","_id":"@bevry/pluginloader@4.4.0","_nodeVersion":"14.4.0","_npmVersion":"6.14.5","dist":{"integrity":"sha512-Gada7j3DsLwAhzicFYfwjm7ye4P08xIUHBqjLjr3TJ+AHSzk+L3OKt9BkaCmk7liF4nUi8YCys6jPMyqZHZzew==","shasum":"291889b2ccbc32949a52f56899fbd878097c4aae","tarball":"https://registry.npmjs.org/@bevry/pluginloader/-/pluginloader-4.4.0.tgz","fileCount":10,"unpackedSize":45287,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe4LQQCRA9TVsSAnZWagAAq0QP/juLtbsNeZ6dHtf7sIa3\nq6ZiQWluZNRINEbh01q6NeUkrAxoYQwH6dvQ3FejIsjZWRbd2ZQj7nhz6G1z\nXBTQjk1sF6HmVLQarBxSKetSDPkCuPeZkGxEY15fYaCF6MVgjLOfqxGy35O/\n43HkBiY6Kfi2OKszrYG75xGnwzNO9EHvF851AO9ATIiJYOV5MwC182Evdtl6\nCKXgHmXbDHocMQttbdM282uU+MiZ3nw0ja4gMRGpmG0LjXU6tjkicaE60q4X\nOTlDKk9YgHw7QsyBqZld64flcTT30OYWiS+++Mq5x8hT35BYIxz9Jdf3YrnF\n+Uc+5T/OGzZbfplm1nK6Med1rgaS5s7ncu6CvycsLJWgJ+FKhJ5fjBjlhwKp\nVmmoQtvWzP0Gxx3KWO+ITkOJ0fYkuB2T5nb93FnS/NB/WcnOpIXBPDzJ64DF\ngp53CJpvGslLQgfO+Nh6bFX10R1gK+grYt/YyAb39of5zrJh9lrsZtApzyux\nNmL4I3jofY/IEppjE8pi1GYoUiQmz6R9yoWBZWh92MV5CzceYNIYmg3OozPP\npqe8DwqKXRyJb5USL//qUwWThyTymhVAVvDlFcK5DFb5MKjREwdNqK+PolFr\nNwAOf0EZnq/+lMrkaCpK2n7xfn8i1WGDQMbj4JZDLyElB8Pb46IcKm68sSCG\nz0on\r\n=4XiD\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC3GYgi3MAj08ldx+o8qAHI1fXeWhuKDJOG2wtCkPdfRQIhANAkg3b8DiwNlPojOtXW62TZt7jz7R37DH/NqIkKd1rg"}]},"_npmUser":{"name":"bevryme","email":"us@bevry.me"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/pluginloader_4.4.0_1591784463888_0.9339082391793847"},"_hasShrinkwrap":false},"4.5.0-next.1591800380.51ef0c743ae220ac4a1b301b473bc600cd592314":{"name":"@bevry/pluginloader","version":"4.5.0-next.1591800380.51ef0c743ae220ac4a1b301b473bc600cd592314","description":"A class for loading, verifying, and creating plugins. Used by DocPad for years.","homepage":"https://github.com/bevry/pluginloader","license":"MIT","keywords":["bevry","docpad","export-default","loader","node","plugin","plugins","typed","types","typescript"],"badges":{"list":["travisci","npmversion","npmdownloads","daviddm","daviddmdev","---","githubsponsors","patreon","flattr","liberapay","buymeacoffee","opencollective","crypto","paypal","wishlist"],"config":{"githubSponsorsUsername":"balupton","buymeacoffeeUsername":"balupton","cryptoURL":"https://bevry.me/crypto","flattrUsername":"balupton","liberapayUsername":"bevry","opencollectiveUsername":"bevry","patreonUsername":"bevry","paypalURL":"https://bevry.me/paypal","wishlistURL":"https://bevry.me/wishlist","travisTLD":"com","githubUsername":"bevry","githubRepository":"pluginloader","githubSlug":"bevry/pluginloader","npmPackageName":"@bevry/pluginloader"}},"funding":"https://bevry.me/fund","author":{"name":"2018+ Benjamin Lupton","email":"b@lupton.cc","url":"https://balupton.com"},"maintainers":[{"email":"b@lupton.cc","name":"balupton"},{"email":"us@bevry.me","name":"bevryme"},{"email":"sumitrai96@gmail.com","name":"sumitrai"}],"contributors":[{"name":"Benjamin Lupton","email":"b@lupton.cc","url":"https://github.com/balupton"}],"bugs":{"url":"https://github.com/bevry/pluginloader/issues"},"repository":{"type":"git","url":"git+https://github.com/bevry/pluginloader.git"},"engines":{"node":">=10"},"editions":[{"description":"TypeScript source code with Import for modules","directory":"source","entry":"index.ts","tags":["typescript","import"],"engines":false},{"description":"TypeScript compiled against ESNext for Node.js with Require for modules","directory":"edition-esnext","entry":"index.js","tags":["javascript","esnext","require"],"engines":{"node":"10 || 12 || 13 || 14"}}],"types":"./compiled-types/","type":"commonjs","main":"edition-esnext/index.js","dependencies":{"errlop":"^3.6.0","semver":"^7.3.2","typechecker":"^7.5.0"},"devDependencies":{"@bevry/update-contributors":"^1.9.0","@typescript-eslint/eslint-plugin":"^3.2.0","@typescript-eslint/parser":"^3.2.0","assert-helpers":"^6.8.0","eslint":"^7.2.0","eslint-config-bevry":"^3.9.0","eslint-config-prettier":"^6.11.0","eslint-plugin-prettier":"^3.1.3","kava":"^5.5.0","make-deno-edition":"^0.3.0","prettier":"^2.0.5","projectz":"^2.6.0","surge":"^0.21.3","typedoc":"^0.17.7","typescript":"^3.9.5","valid-directory":"^2.3.0"},"scripts":{"our:clean":"rm -Rf ./docs ./edition* ./es2015 ./es5 ./out ./.next","our:compile":"npm run our:compile:deno && npm run our:compile:edition-esnext && npm run our:compile:types","our:compile:deno":"make-deno-edition --attempt","our:compile:edition-esnext":"tsc --module commonjs --target ESNext --outDir ./edition-esnext --project tsconfig.json && ( test ! -d edition-esnext/source || ( mv edition-esnext/source edition-temp && rm -Rf edition-esnext && mv edition-temp edition-esnext ) )","our:compile:types":"tsc --project tsconfig.json --emitDeclarationOnly --declaration --declarationMap --declarationDir ./compiled-types && ( test ! -d compiled-types/source || ( mv compiled-types/source edition-temp && rm -Rf compiled-types && mv edition-temp compiled-types ) )","our:deploy":"echo no need for this project","our:meta":"npm run our:meta:contributors && npm run our:meta:docs && npm run our:meta:projectz","our:meta:contributors":"update-contributors","our:meta:docs":"npm run our:meta:docs:typedoc","our:meta:docs:typedoc":"rm -Rf ./docs && typedoc --mode file --exclude '**/+(*test*|node_modules)' --excludeExternals --name \"$npm_package_name\" --readme ./README.md --out ./docs ./source","our:meta:projectz":"projectz compile","our:release":"npm run our:release:prepare && npm run our:release:check-changelog && npm run our:release:check-dirty && npm run our:release:tag && npm run our:release:push","our:release:check-changelog":"cat ./HISTORY.md | grep v$npm_package_version || (echo add a changelog entry for v$npm_package_version && exit -1)","our:release:check-dirty":"git diff --exit-code","our:release:prepare":"npm run our:clean && npm run our:compile && npm run our:test && npm run our:meta","our:release:push":"git push origin master && git push origin --tags","our:release:tag":"export MESSAGE=$(cat ./HISTORY.md | sed -n \"/## v$npm_package_version/,/##/p\" | sed 's/## //' | awk 'NR>1{print buf}{buf = $0}') && test \"$MESSAGE\" || (echo 'proper changelog entry not found' && exit -1) && git tag v$npm_package_version -am \"$MESSAGE\"","our:setup":"npm run our:setup:install","our:setup:install":"npm install","our:test":"npm run our:verify && npm test","our:verify":"npm run our:verify:directory && npm run our:verify:eslint && npm run our:verify:prettier","our:verify:directory":"valid-directory","our:verify:eslint":"eslint --fix --ignore-pattern '**/*.d.ts' --ignore-pattern '**/vendor/' --ignore-pattern '**/node_modules/' --ext .mjs,.js,.jsx,.ts,.tsx ./source","our:verify:prettier":"prettier --write .","test":"node ./edition-esnext/test.js"},"eslintConfig":{"extends":["bevry"]},"prettier":{"semi":false,"singleQuote":true},"gitHead":"51ef0c743ae220ac4a1b301b473bc600cd592314","readme":"<!-- TITLE/ -->\n\n<h1>@bevry/pluginloader</h1>\n\n<!-- /TITLE -->\n\n\n<!-- BADGES/ -->\n\n<span class=\"badge-travisci\"><a href=\"http://travis-ci.com/bevry/pluginloader\" title=\"Check this project's build status on TravisCI\"><img src=\"https://img.shields.io/travis/com/bevry/pluginloader/master.svg\" alt=\"Travis CI Build Status\" /></a></span>\n<span class=\"badge-npmversion\"><a href=\"https://npmjs.org/package/@bevry/pluginloader\" title=\"View this project on NPM\"><img src=\"https://img.shields.io/npm/v/@bevry/pluginloader.svg\" alt=\"NPM version\" /></a></span>\n<span class=\"badge-npmdownloads\"><a href=\"https://npmjs.org/package/@bevry/pluginloader\" title=\"View this project on NPM\"><img src=\"https://img.shields.io/npm/dm/@bevry/pluginloader.svg\" alt=\"NPM downloads\" /></a></span>\n<span class=\"badge-daviddm\"><a href=\"https://david-dm.org/bevry/pluginloader\" title=\"View the status of this project's dependencies on DavidDM\"><img src=\"https://img.shields.io/david/bevry/pluginloader.svg\" alt=\"Dependency Status\" /></a></span>\n<span class=\"badge-daviddmdev\"><a href=\"https://david-dm.org/bevry/pluginloader#info=devDependencies\" title=\"View the status of this project's development dependencies on DavidDM\"><img src=\"https://img.shields.io/david/dev/bevry/pluginloader.svg\" alt=\"Dev Dependency Status\" /></a></span>\n<br class=\"badge-separator\" />\n<span class=\"badge-githubsponsors\"><a href=\"https://github.com/sponsors/balupton\" title=\"Donate to this project using GitHub Sponsors\"><img src=\"https://img.shields.io/badge/github-donate-yellow.svg\" alt=\"GitHub Sponsors donate button\" /></a></span>\n<span class=\"badge-patreon\"><a href=\"https://patreon.com/bevry\" title=\"Donate to this project using Patreon\"><img src=\"https://img.shields.io/badge/patreon-donate-yellow.svg\" alt=\"Patreon donate button\" /></a></span>\n<span class=\"badge-flattr\"><a href=\"https://flattr.com/profile/balupton\" title=\"Donate to this project using Flattr\"><img src=\"https://img.shields.io/badge/flattr-donate-yellow.svg\" alt=\"Flattr donate button\" /></a></span>\n<span class=\"badge-liberapay\"><a href=\"https://liberapay.com/bevry\" title=\"Donate to this project using Liberapay\"><img src=\"https://img.shields.io/badge/liberapay-donate-yellow.svg\" alt=\"Liberapay donate button\" /></a></span>\n<span class=\"badge-buymeacoffee\"><a href=\"https://buymeacoffee.com/balupton\" title=\"Donate to this project using Buy Me A Coffee\"><img src=\"https://img.shields.io/badge/buy%20me%20a%20coffee-donate-yellow.svg\" alt=\"Buy Me A Coffee donate button\" /></a></span>\n<span class=\"badge-opencollective\"><a href=\"https://opencollective.com/bevry\" title=\"Donate to this project using Open Collective\"><img src=\"https://img.shields.io/badge/open%20collective-donate-yellow.svg\" alt=\"Open Collective donate button\" /></a></span>\n<span class=\"badge-crypto\"><a href=\"https://bevry.me/crypto\" title=\"Donate to this project using Cryptocurrency\"><img src=\"https://img.shields.io/badge/crypto-donate-yellow.svg\" alt=\"crypto donate button\" /></a></span>\n<span class=\"badge-paypal\"><a href=\"https://bevry.me/paypal\" title=\"Donate to this project using Paypal\"><img src=\"https://img.shields.io/badge/paypal-donate-yellow.svg\" alt=\"PayPal donate button\" /></a></span>\n<span class=\"badge-wishlist\"><a href=\"https://bevry.me/wishlist\" title=\"Buy an item on our wishlist for us\"><img src=\"https://img.shields.io/badge/wishlist-donate-yellow.svg\" alt=\"Wishlist browse button\" /></a></span>\n\n<!-- /BADGES -->\n\n\n<!-- DESCRIPTION/ -->\n\nA class for loading, verifying, and creating plugins. Used by DocPad for years.\n\n<!-- /DESCRIPTION -->\n\n\n## Usage\n\n[Complete API Documentation.](http://master.pluginloader.bevry.surge.sh/docs/globals.html)\n\n### Basics\n\nCreate your project:\n\n1. `mkdir my-project`\n1. `cd my-project`\n\nCreate your plugin:\n\n1. `mkdir myplugin`\n1. `cd myplugin`\n1. `npm init`\n1. `index.js` to:\n\n    ```javascript\n    module.exports = function (BasePlugin) {\n        return class MyPlugin extends BasePlugin {\n            constructor(...args) {\n                super(...args)\n                console.log('hello from my plugin')\n            }\n        }\n    }\n    ```\n\n1. `cd ..`\n\nCreate your plugin loader:\n\n1. `mkdir myapp`\n1. `cd myapp`\n1. `npm init`\n1. `index.js` to:\n\n    ```javascript\n    import PluginLoader from '@bevry/pluginloader'\n\n    class BasePlugin {\n        constructor() {\n            console.log('hello from base plugin')\n        }\n    }\n\n    const pluginLoader = new PluginLoader({\n        BasePlugin,\n        pluginPath: require('path').resolve(__dirname, '..', 'myplugin'),\n    })\n    ```\n\n1. `cd ..`\n\nRun the project:\n\n1. `node myapp/index.js`\n\n### Ecosystem\n\n-   [pluginclerk](https://github.com/bevry/pluginclerk) a project for fetching compatible plugins from the npm registry\n-   [docpad-baseplugin](https://github.com/docpad/docpad-baseplugin) the BasePlugin class that DocPad uses\n-   [docpad-plugintester](https://github.com/docpad/docpad-plugintester) testing helpers for DocPad plugins\n\n<!-- INSTALL/ -->\n\n<h2>Install</h2>\n\n<a href=\"https://npmjs.com\" title=\"npm is a package manager for javascript\"><h3>npm</h3></a>\n<ul>\n<li>Install: <code>npm install --save @bevry/pluginloader</code></li>\n<li>Import: <code>import pkg from ('@bevry/pluginloader')</code></li>\n<li>Require: <code>const pkg = require('@bevry/pluginloader').default</code></li>\n</ul>\n\n<h3><a href=\"https://editions.bevry.me\" title=\"Editions are the best way to produce and consume packages you care about.\">Editions</a></h3>\n\n<p>This package is published with the following editions:</p>\n\n<ul><li><code>@bevry/pluginloader/source/index.ts</code> is <a href=\"https://www.typescriptlang.org/\" title=\"TypeScript is a typed superset of JavaScript that compiles to plain JavaScript. \">TypeScript</a> source code with <a href=\"https://babeljs.io/docs/learn-es2015/#modules\" title=\"ECMAScript Modules\">Import</a> for modules</li>\n<li><code>@bevry/pluginloader</code> aliases <code>@bevry/pluginloader/edition-esnext/index.js</code></li>\n<li><code>@bevry/pluginloader/edition-esnext/index.js</code> is <a href=\"https://www.typescriptlang.org/\" title=\"TypeScript is a typed superset of JavaScript that compiles to plain JavaScript. \">TypeScript</a> compiled against <a href=\"https://en.wikipedia.org/wiki/ECMAScript#ES.Next\" title=\"ECMAScript Next\">ESNext</a> for <a href=\"https://nodejs.org\" title=\"Node.js is a JavaScript runtime built on Chrome's V8 JavaScript engine\">Node.js</a> with <a href=\"https://nodejs.org/dist/latest-v5.x/docs/api/modules.html\" title=\"Node/CJS Modules\">Require</a> for modules</li></ul>\n\n<!-- /INSTALL -->\n\n\n<!-- HISTORY/ -->\n\n<h2>History</h2>\n\n<a href=\"https://github.com/bevry/pluginloader/blob/master/HISTORY.md#files\">Discover the release history by heading on over to the <code>HISTORY.md</code> file.</a>\n\n<!-- /HISTORY -->\n\n\n<!-- CONTRIBUTE/ -->\n\n<h2>Contribute</h2>\n\n<a href=\"https://github.com/bevry/pluginloader/blob/master/CONTRIBUTING.md#files\">Discover how you can contribute by heading on over to the <code>CONTRIBUTING.md</code> file.</a>\n\n<!-- /CONTRIBUTE -->\n\n\n<!-- BACKERS/ -->\n\n<h2>Backers</h2>\n\n<h3>Maintainers</h3>\n\nThese amazing people are maintaining this project:\n\n<ul><li><a href=\"https://balupton.com\">Benjamin Lupton</a> — <a href=\"https://github.com/bevry/pluginloader/commits?author=balupton\" title=\"View the GitHub contributions of Benjamin Lupton on repository bevry/pluginloader\">view contributions</a></li></ul>\n\n<h3>Sponsors</h3>\n\nNo sponsors yet! Will you be the first?\n\n<span class=\"badge-githubsponsors\"><a href=\"https://github.com/sponsors/balupton\" title=\"Donate to this project using GitHub Sponsors\"><img src=\"https://img.shields.io/badge/github-donate-yellow.svg\" alt=\"GitHub Sponsors donate button\" /></a></span>\n<span class=\"badge-patreon\"><a href=\"https://patreon.com/bevry\" title=\"Donate to this project using Patreon\"><img src=\"https://img.shields.io/badge/patreon-donate-yellow.svg\" alt=\"Patreon donate button\" /></a></span>\n<span class=\"badge-flattr\"><a href=\"https://flattr.com/profile/balupton\" title=\"Donate to this project using Flattr\"><img src=\"https://img.shields.io/badge/flattr-donate-yellow.svg\" alt=\"Flattr donate button\" /></a></span>\n<span class=\"badge-liberapay\"><a href=\"https://liberapay.com/bevry\" title=\"Donate to this project using Liberapay\"><img src=\"https://img.shields.io/badge/liberapay-donate-yellow.svg\" alt=\"Liberapay donate button\" /></a></span>\n<span class=\"badge-buymeacoffee\"><a href=\"https://buymeacoffee.com/balupton\" title=\"Donate to this project using Buy Me A Coffee\"><img src=\"https://img.shields.io/badge/buy%20me%20a%20coffee-donate-yellow.svg\" alt=\"Buy Me A Coffee donate button\" /></a></span>\n<span class=\"badge-opencollective\"><a href=\"https://opencollective.com/bevry\" title=\"Donate to this project using Open Collective\"><img src=\"https://img.shields.io/badge/open%20collective-donate-yellow.svg\" alt=\"Open Collective donate button\" /></a></span>\n<span class=\"badge-crypto\"><a href=\"https://bevry.me/crypto\" title=\"Donate to this project using Cryptocurrency\"><img src=\"https://img.shields.io/badge/crypto-donate-yellow.svg\" alt=\"crypto donate button\" /></a></span>\n<span class=\"badge-paypal\"><a href=\"https://bevry.me/paypal\" title=\"Donate to this project using Paypal\"><img src=\"https://img.shields.io/badge/paypal-donate-yellow.svg\" alt=\"PayPal donate button\" /></a></span>\n<span class=\"badge-wishlist\"><a href=\"https://bevry.me/wishlist\" title=\"Buy an item on our wishlist for us\"><img src=\"https://img.shields.io/badge/wishlist-donate-yellow.svg\" alt=\"Wishlist browse button\" /></a></span>\n\n<h3>Contributors</h3>\n\nThese amazing people have contributed code to this project:\n\n<ul><li><a href=\"https://balupton.com\">Benjamin Lupton</a> — <a href=\"https://github.com/bevry/pluginloader/commits?author=balupton\" title=\"View the GitHub contributions of Benjamin Lupton on repository bevry/pluginloader\">view contributions</a></li></ul>\n\n<a href=\"https://github.com/bevry/pluginloader/blob/master/CONTRIBUTING.md#files\">Discover how you can contribute by heading on over to the <code>CONTRIBUTING.md</code> file.</a>\n\n<!-- /BACKERS -->\n\n\n<!-- LICENSE/ -->\n\n<h2>License</h2>\n\nUnless stated otherwise all works are:\n\n<ul><li>Copyright &copy; 2018+ <a href=\"https://balupton.com\">Benjamin Lupton</a></li></ul>\n\nand licensed under:\n\n<ul><li><a href=\"http://spdx.org/licenses/MIT.html\">MIT License</a></li></ul>\n\n<!-- /LICENSE -->\n","readmeFilename":"README.md","_id":"@bevry/pluginloader@4.5.0-next.1591800380.51ef0c743ae220ac4a1b301b473bc600cd592314","_nodeVersion":"14.4.0","_npmVersion":"6.14.5","dist":{"integrity":"sha512-5Oo+OAVKKggJFs0TVMMf9Uf55bDe/oits7Wzl8yb8nCyUWWFPS7F56LNLZEMe7CT+R4vat8EjiQaj+2vmKdYnQ==","shasum":"e2c9fdbc01329d5278705e761865e0308dc1adf4","tarball":"https://registry.npmjs.org/@bevry/pluginloader/-/pluginloader-4.5.0-next.1591800380.51ef0c743ae220ac4a1b301b473bc600cd592314.tgz","fileCount":10,"unpackedSize":45538,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe4PI9CRA9TVsSAnZWagAAlMEP/3oq6v49oTljrG9DqoUH\nt2qA4nnbPbT5IvmH0yZuXOW7deSxOUb1kkJtg1qJIebY97WNpjYJ/j3z7WJ9\nOVX5+c2pRz5OMOxi5opvqZ5iU/E35ZzSRuWDhpEWRNy3I0v//w3rsC6d2iSn\nB6eCSsC5LpZVKVFmpX2CSzxBs60oxp/0FT7SUwAa0wVxiV56xdsimEi3gn6M\nQ4k56F8MhMDr+M9vQT4bsIDYt1FXv+XL/VjOez7rEdze+gyqUoh5q6H1ShNW\nyVVwU1516KMnCGg5yhCRN+mgShqQD3YA66JdjvqpYmrz8e2aLZ22zATQapk8\n/oPVKKiW19iLN9ewHVPVWAHMIyi1oGcUl67OdSev3ftw7MrUbcwfKyrBuTPR\n/45xOpzu1kNzJwRte5JomelU9BikPAVFEnVT1vYaPalVQaeEaEQfzW+8L4VM\n5KWHk1JyDhp3olBTRq1RxILbjbLNKHs1M18XmOQA+Ca1SUj+e97yChc+xle3\nQsE8UyLLxCJA44rWGSzkrVDbPRy2ulb4DvflPMw+ilsF4RWlR9eVmmQTh5BW\nOryfnml7wb48QnEyxn96Ui29RyeoOOIopA8Q/Pb35ablXBi68eTWPIZwHiUa\nEjiomUWc+VkxcMzY5S7gIYHDZDoXh6Y4VYZQAX/86AQA+UF3Fn9tIzhYWC0d\n8WyA\r\n=+RLS\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC1waoLDNgNkolY/7qzJLJ7bjFgfFR0K5LCvhJs71JD2gIgYMKtCBk2KuybtFdLaXtFCBuWF5SqH22stbArZISaGLc="}]},"_npmUser":{"name":"bevryme","email":"us@bevry.me"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/pluginloader_4.5.0-next.1591800380.51ef0c743ae220ac4a1b301b473bc600cd592314_1591800381329_0.6106346516288621"},"_hasShrinkwrap":false},"4.5.0":{"name":"@bevry/pluginloader","version":"4.5.0","description":"A class for loading, verifying, and creating plugins. Used by DocPad for years.","homepage":"https://github.com/bevry/pluginloader","license":"MIT","keywords":["bevry","docpad","export-default","loader","node","plugin","plugins","typed","types","typescript"],"badges":{"list":["travisci","npmversion","npmdownloads","daviddm","daviddmdev","---","githubsponsors","patreon","flattr","liberapay","buymeacoffee","opencollective","crypto","paypal","wishlist"],"config":{"githubSponsorsUsername":"balupton","buymeacoffeeUsername":"balupton","cryptoURL":"https://bevry.me/crypto","flattrUsername":"balupton","liberapayUsername":"bevry","opencollectiveUsername":"bevry","patreonUsername":"bevry","paypalURL":"https://bevry.me/paypal","wishlistURL":"https://bevry.me/wishlist","travisTLD":"com","githubUsername":"bevry","githubRepository":"pluginloader","githubSlug":"bevry/pluginloader","npmPackageName":"@bevry/pluginloader"}},"funding":"https://bevry.me/fund","author":{"name":"2018+ Benjamin Lupton","email":"b@lupton.cc","url":"https://balupton.com"},"maintainers":[{"email":"b@lupton.cc","name":"balupton"},{"email":"us@bevry.me","name":"bevryme"},{"email":"sumitrai96@gmail.com","name":"sumitrai"}],"contributors":[{"name":"Benjamin Lupton","email":"b@lupton.cc","url":"https://github.com/balupton"}],"bugs":{"url":"https://github.com/bevry/pluginloader/issues"},"repository":{"type":"git","url":"git+https://github.com/bevry/pluginloader.git"},"engines":{"node":">=10"},"editions":[{"description":"TypeScript source code with Import for modules","directory":"source","entry":"index.ts","tags":["typescript","import"],"engines":false},{"description":"TypeScript compiled against ESNext for Node.js with Require for modules","directory":"edition-esnext","entry":"index.js","tags":["javascript","esnext","require"],"engines":{"node":"10 || 12 || 13 || 14"}}],"types":"./compiled-types/","type":"commonjs","main":"edition-esnext/index.js","dependencies":{"errlop":"^3.6.0","semver":"^7.3.2","typechecker":"^7.5.0"},"devDependencies":{"@bevry/update-contributors":"^1.9.0","@typescript-eslint/eslint-plugin":"^3.2.0","@typescript-eslint/parser":"^3.2.0","assert-helpers":"^6.8.0","eslint":"^7.2.0","eslint-config-bevry":"^3.9.0","eslint-config-prettier":"^6.11.0","eslint-plugin-prettier":"^3.1.3","kava":"^5.5.0","make-deno-edition":"^0.3.0","prettier":"^2.0.5","projectz":"^2.6.0","surge":"^0.21.3","typedoc":"^0.17.7","typescript":"^3.9.5","valid-directory":"^2.3.0"},"scripts":{"our:clean":"rm -Rf ./docs ./edition* ./es2015 ./es5 ./out ./.next","our:compile":"npm run our:compile:deno && npm run our:compile:edition-esnext && npm run our:compile:types","our:compile:deno":"make-deno-edition --attempt","our:compile:edition-esnext":"tsc --module commonjs --target ESNext --outDir ./edition-esnext --project tsconfig.json && ( test ! -d edition-esnext/source || ( mv edition-esnext/source edition-temp && rm -Rf edition-esnext && mv edition-temp edition-esnext ) )","our:compile:types":"tsc --project tsconfig.json --emitDeclarationOnly --declaration --declarationMap --declarationDir ./compiled-types && ( test ! -d compiled-types/source || ( mv compiled-types/source edition-temp && rm -Rf compiled-types && mv edition-temp compiled-types ) )","our:deploy":"echo no need for this project","our:meta":"npm run our:meta:contributors && npm run our:meta:docs && npm run our:meta:projectz","our:meta:contributors":"update-contributors","our:meta:docs":"npm run our:meta:docs:typedoc","our:meta:docs:typedoc":"rm -Rf ./docs && typedoc --mode file --exclude '**/+(*test*|node_modules)' --excludeExternals --name \"$npm_package_name\" --readme ./README.md --out ./docs ./source","our:meta:projectz":"projectz compile","our:release":"npm run our:release:prepare && npm run our:release:check-changelog && npm run our:release:check-dirty && npm run our:release:tag && npm run our:release:push","our:release:check-changelog":"cat ./HISTORY.md | grep v$npm_package_version || (echo add a changelog entry for v$npm_package_version && exit -1)","our:release:check-dirty":"git diff --exit-code","our:release:prepare":"npm run our:clean && npm run our:compile && npm run our:test && npm run our:meta","our:release:push":"git push origin master && git push origin --tags","our:release:tag":"export MESSAGE=$(cat ./HISTORY.md | sed -n \"/## v$npm_package_version/,/##/p\" | sed 's/## //' | awk 'NR>1{print buf}{buf = $0}') && test \"$MESSAGE\" || (echo 'proper changelog entry not found' && exit -1) && git tag v$npm_package_version -am \"$MESSAGE\"","our:setup":"npm run our:setup:install","our:setup:install":"npm install","our:test":"npm run our:verify && npm test","our:verify":"npm run our:verify:directory && npm run our:verify:eslint && npm run our:verify:prettier","our:verify:directory":"valid-directory","our:verify:eslint":"eslint --fix --ignore-pattern '**/*.d.ts' --ignore-pattern '**/vendor/' --ignore-pattern '**/node_modules/' --ext .mjs,.js,.jsx,.ts,.tsx ./source","our:verify:prettier":"prettier --write .","test":"node ./edition-esnext/test.js"},"eslintConfig":{"extends":["bevry"]},"prettier":{"semi":false,"singleQuote":true},"gitHead":"51ef0c743ae220ac4a1b301b473bc600cd592314","_id":"@bevry/pluginloader@4.5.0","_nodeVersion":"14.4.0","_npmVersion":"6.14.5","dist":{"integrity":"sha512-53EE3qJpNiucgIwXtHx0QwAV6yXR6J5jPNtftfARlwlZE4XvlwkS/fFzaiFWqmMS37Hiko2oBwcliZFgnX42Dg==","shasum":"c3e9b572a5e11cc9992882ce7398f3cd78898518","tarball":"https://registry.npmjs.org/@bevry/pluginloader/-/pluginloader-4.5.0.tgz","fileCount":10,"unpackedSize":45481,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe4PKCCRA9TVsSAnZWagAAVm0P/2Sx5YLeqdCZkW+hOjGq\njkfwZSh0vTDbHh0aysHPxBBvYhiXrlGt8Vj9UpDOTJaKmiKCb0OSAi9uAwoY\nyKJLP1mMnCrC6DV7+PfDUMc3jiZ+itw9CRbNcnUHSkQTKxnDTSMalVSM5Loi\n1GuXuyu52eB9vJ67DoyjpvtSDeYP3hWfe/9Xjnl246bOEsx1RPxP+fMgMCQv\nNZBPu03of/ieNO/W10CPvkMJDPWiSP7+Sc+VxnDtnX2+yJD5g1CXctpfkgJs\nD2aityH3Fu1lbE9JYSj1WNYhlqwt6oO6/c1JS7cLJV3XkpgJej9pmPkc16Wn\nXsbDCQwJAjU/R7MVSQifbZ9T+FeII1oDh0vJRDmZ/TC35q3EwW6BcyT41nby\nQu7LiTN21t7Uzcsl7/T4WyftiOt8w9+t7UzP3Ombkl7a//4Td7pskFR/49+u\nQ8DHSr88lPFsCN96WhP9w4VeKgcLTI8bqcLkJ072s+YK7cc9lJF37C0GqplL\n/nfir/E9b+50WD8bowmQ3hyCmRnBdfAotHbi89vV/1odqlQAFG5xsD0BtQwl\nwZbR5tn+i4OWyDByy5bRs9BfG0s5uy4pTL0I9Xcsi9JbNfrQX8SyU7QZWbS8\nSRLgBi0QlJQfsB53v7UCfBn8eSYJkHWaFDl5TAZLYrD1t03ze+KDAbTN6BuL\nd6uX\r\n=+paH\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDqLA3bulKPZM8txXxq3B6WwRjjK5i4VvMA9OO25h7PWQIgDmvvDc4SzAVfzfTp9RbKsX3UL/UcazjQPDXUeng4oEc="}]},"_npmUser":{"name":"bevryme","email":"us@bevry.me"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/pluginloader_4.5.0_1591800450288_0.9197977029925275"},"_hasShrinkwrap":false},"4.5.0-next.1592598242.aa9cb088d7b0a262e4719668b239308da2cb5405":{"name":"@bevry/pluginloader","version":"4.5.0-next.1592598242.aa9cb088d7b0a262e4719668b239308da2cb5405","description":"A class for loading, verifying, and creating plugins. Used by DocPad for years.","homepage":"https://github.com/bevry/pluginloader","license":"MIT","keywords":["bevry","docpad","export-default","loader","node","plugin","plugins","typed","types","typescript"],"badges":{"list":["travisci","npmversion","npmdownloads","daviddm","daviddmdev","---","githubsponsors","patreon","flattr","liberapay","buymeacoffee","opencollective","crypto","paypal","wishlist"],"config":{"githubSponsorsUsername":"balupton","buymeacoffeeUsername":"balupton","cryptoURL":"https://bevry.me/crypto","flattrUsername":"balupton","liberapayUsername":"bevry","opencollectiveUsername":"bevry","patreonUsername":"bevry","paypalURL":"https://bevry.me/paypal","wishlistURL":"https://bevry.me/wishlist","travisTLD":"com","githubUsername":"bevry","githubRepository":"pluginloader","githubSlug":"bevry/pluginloader","npmPackageName":"@bevry/pluginloader"}},"funding":"https://bevry.me/fund","author":{"name":"2018+ Benjamin Lupton","email":"b@lupton.cc","url":"https://balupton.com"},"maintainers":[{"email":"b@lupton.cc","name":"balupton"},{"email":"us@bevry.me","name":"bevryme"},{"email":"sumitrai96@gmail.com","name":"sumitrai"}],"contributors":[{"name":"Benjamin Lupton","email":"b@lupton.cc","url":"https://github.com/balupton"}],"bugs":{"url":"https://github.com/bevry/pluginloader/issues"},"repository":{"type":"git","url":"git+https://github.com/bevry/pluginloader.git"},"engines":{"node":">=10"},"editions":[{"description":"TypeScript source code with Import for modules","directory":"source","entry":"index.ts","tags":["typescript","import"],"engines":false},{"description":"TypeScript compiled against ESNext for Node.js with Require for modules","directory":"edition-esnext","entry":"index.js","tags":["javascript","esnext","require"],"engines":{"node":"10 || 12 || 13 || 14"}}],"types":"./compiled-types/","type":"commonjs","main":"edition-esnext/index.js","dependencies":{"errlop":"^3.6.0","semver":"^7.3.2","typechecker":"^7.5.0"},"devDependencies":{"@bevry/update-contributors":"^1.9.0","@typescript-eslint/eslint-plugin":"^3.2.0","@typescript-eslint/parser":"^3.2.0","assert-helpers":"^6.8.0","eslint":"^7.2.0","eslint-config-bevry":"^3.9.0","eslint-config-prettier":"^6.11.0","eslint-plugin-prettier":"^3.1.3","kava":"^5.5.0","make-deno-edition":"^0.3.0","prettier":"^2.0.5","projectz":"^2.6.0","surge":"^0.21.3","typedoc":"^0.17.7","typescript":"^3.9.5","valid-directory":"^2.3.0"},"scripts":{"our:clean":"rm -Rf ./docs ./edition* ./es2015 ./es5 ./out ./.next","our:compile":"npm run our:compile:deno && npm run our:compile:edition-esnext && npm run our:compile:types","our:compile:deno":"make-deno-edition --attempt","our:compile:edition-esnext":"tsc --module commonjs --target ESNext --outDir ./edition-esnext --project tsconfig.json && ( test ! -d edition-esnext/source || ( mv edition-esnext/source edition-temp && rm -Rf edition-esnext && mv edition-temp edition-esnext ) )","our:compile:types":"tsc --project tsconfig.json --emitDeclarationOnly --declaration --declarationMap --declarationDir ./compiled-types && ( test ! -d compiled-types/source || ( mv compiled-types/source edition-temp && rm -Rf compiled-types && mv edition-temp compiled-types ) )","our:deploy":"echo no need for this project","our:meta":"npm run our:meta:contributors && npm run our:meta:docs && npm run our:meta:projectz","our:meta:contributors":"update-contributors","our:meta:docs":"npm run our:meta:docs:typedoc","our:meta:docs:typedoc":"rm -Rf ./docs && typedoc --mode file --exclude '**/+(*test*|node_modules)' --excludeExternals --name \"$npm_package_name\" --readme ./README.md --out ./docs ./source","our:meta:projectz":"projectz compile","our:release":"npm run our:release:prepare && npm run our:release:check-changelog && npm run our:release:check-dirty && npm run our:release:tag && npm run our:release:push","our:release:check-changelog":"cat ./HISTORY.md | grep v$npm_package_version || (echo add a changelog entry for v$npm_package_version && exit -1)","our:release:check-dirty":"git diff --exit-code","our:release:prepare":"npm run our:clean && npm run our:compile && npm run our:test && npm run our:meta","our:release:push":"git push origin master && git push origin --tags","our:release:tag":"export MESSAGE=$(cat ./HISTORY.md | sed -n \"/## v$npm_package_version/,/##/p\" | sed 's/## //' | awk 'NR>1{print buf}{buf = $0}') && test \"$MESSAGE\" || (echo 'proper changelog entry not found' && exit -1) && git tag v$npm_package_version -am \"$MESSAGE\"","our:setup":"npm run our:setup:install","our:setup:install":"npm install","our:test":"npm run our:verify && npm test","our:verify":"npm run our:verify:directory && npm run our:verify:eslint && npm run our:verify:prettier","our:verify:directory":"valid-directory","our:verify:eslint":"eslint --fix --ignore-pattern '**/*.d.ts' --ignore-pattern '**/vendor/' --ignore-pattern '**/node_modules/' --ext .mjs,.js,.jsx,.ts,.tsx ./source","our:verify:prettier":"prettier --write .","test":"node ./edition-esnext/test.js"},"eslintConfig":{"extends":["bevry"]},"prettier":{"semi":false,"singleQuote":true},"gitHead":"aa9cb088d7b0a262e4719668b239308da2cb5405","readme":"<!-- TITLE/ -->\n\n<h1>@bevry/pluginloader</h1>\n\n<!-- /TITLE -->\n\n\n<!-- BADGES/ -->\n\n<span class=\"badge-travisci\"><a href=\"http://travis-ci.com/bevry/pluginloader\" title=\"Check this project's build status on TravisCI\"><img src=\"https://img.shields.io/travis/com/bevry/pluginloader/master.svg\" alt=\"Travis CI Build Status\" /></a></span>\n<span class=\"badge-npmversion\"><a href=\"https://npmjs.org/package/@bevry/pluginloader\" title=\"View this project on NPM\"><img src=\"https://img.shields.io/npm/v/@bevry/pluginloader.svg\" alt=\"NPM version\" /></a></span>\n<span class=\"badge-npmdownloads\"><a href=\"https://npmjs.org/package/@bevry/pluginloader\" title=\"View this project on NPM\"><img src=\"https://img.shields.io/npm/dm/@bevry/pluginloader.svg\" alt=\"NPM downloads\" /></a></span>\n<span class=\"badge-daviddm\"><a href=\"https://david-dm.org/bevry/pluginloader\" title=\"View the status of this project's dependencies on DavidDM\"><img src=\"https://img.shields.io/david/bevry/pluginloader.svg\" alt=\"Dependency Status\" /></a></span>\n<span class=\"badge-daviddmdev\"><a href=\"https://david-dm.org/bevry/pluginloader#info=devDependencies\" title=\"View the status of this project's development dependencies on DavidDM\"><img src=\"https://img.shields.io/david/dev/bevry/pluginloader.svg\" alt=\"Dev Dependency Status\" /></a></span>\n<br class=\"badge-separator\" />\n<span class=\"badge-githubsponsors\"><a href=\"https://github.com/sponsors/balupton\" title=\"Donate to this project using GitHub Sponsors\"><img src=\"https://img.shields.io/badge/github-donate-yellow.svg\" alt=\"GitHub Sponsors donate button\" /></a></span>\n<span class=\"badge-patreon\"><a href=\"https://patreon.com/bevry\" title=\"Donate to this project using Patreon\"><img src=\"https://img.shields.io/badge/patreon-donate-yellow.svg\" alt=\"Patreon donate button\" /></a></span>\n<span class=\"badge-flattr\"><a href=\"https://flattr.com/profile/balupton\" title=\"Donate to this project using Flattr\"><img src=\"https://img.shields.io/badge/flattr-donate-yellow.svg\" alt=\"Flattr donate button\" /></a></span>\n<span class=\"badge-liberapay\"><a href=\"https://liberapay.com/bevry\" title=\"Donate to this project using Liberapay\"><img src=\"https://img.shields.io/badge/liberapay-donate-yellow.svg\" alt=\"Liberapay donate button\" /></a></span>\n<span class=\"badge-buymeacoffee\"><a href=\"https://buymeacoffee.com/balupton\" title=\"Donate to this project using Buy Me A Coffee\"><img src=\"https://img.shields.io/badge/buy%20me%20a%20coffee-donate-yellow.svg\" alt=\"Buy Me A Coffee donate button\" /></a></span>\n<span class=\"badge-opencollective\"><a href=\"https://opencollective.com/bevry\" title=\"Donate to this project using Open Collective\"><img src=\"https://img.shields.io/badge/open%20collective-donate-yellow.svg\" alt=\"Open Collective donate button\" /></a></span>\n<span class=\"badge-crypto\"><a href=\"https://bevry.me/crypto\" title=\"Donate to this project using Cryptocurrency\"><img src=\"https://img.shields.io/badge/crypto-donate-yellow.svg\" alt=\"crypto donate button\" /></a></span>\n<span class=\"badge-paypal\"><a href=\"https://bevry.me/paypal\" title=\"Donate to this project using Paypal\"><img src=\"https://img.shields.io/badge/paypal-donate-yellow.svg\" alt=\"PayPal donate button\" /></a></span>\n<span class=\"badge-wishlist\"><a href=\"https://bevry.me/wishlist\" title=\"Buy an item on our wishlist for us\"><img src=\"https://img.shields.io/badge/wishlist-donate-yellow.svg\" alt=\"Wishlist browse button\" /></a></span>\n\n<!-- /BADGES -->\n\n\n<!-- DESCRIPTION/ -->\n\nA class for loading, verifying, and creating plugins. Used by DocPad for years.\n\n<!-- /DESCRIPTION -->\n\n\n## Usage\n\n[Complete API Documentation.](http://master.pluginloader.bevry.surge.sh/docs/globals.html)\n\n### Basics\n\nCreate your project:\n\n1. `mkdir my-project`\n1. `cd my-project`\n\nCreate your plugin:\n\n1. `mkdir myplugin`\n1. `cd myplugin`\n1. `npm init`\n1. `index.js` to:\n\n    ```javascript\n    module.exports = function (BasePlugin) {\n        return class MyPlugin extends BasePlugin {\n            constructor(...args) {\n                super(...args)\n                console.log('hello from my plugin')\n            }\n        }\n    }\n    ```\n\n1. `cd ..`\n\nCreate your plugin loader:\n\n1. `mkdir myapp`\n1. `cd myapp`\n1. `npm init`\n1. `index.js` to:\n\n    ```javascript\n    import PluginLoader from '@bevry/pluginloader'\n\n    class BasePlugin {\n        constructor() {\n            console.log('hello from base plugin')\n        }\n    }\n\n    const pluginLoader = new PluginLoader({\n        BasePlugin,\n        pluginPath: require('path').resolve(__dirname, '..', 'myplugin'),\n    })\n    ```\n\n1. `cd ..`\n\nRun the project:\n\n1. `node myapp/index.js`\n\n### Ecosystem\n\n-   [pluginclerk](https://github.com/bevry/pluginclerk) a project for fetching compatible plugins from the npm registry\n-   [docpad-baseplugin](https://github.com/docpad/docpad-baseplugin) the BasePlugin class that DocPad uses\n-   [docpad-plugintester](https://github.com/docpad/docpad-plugintester) testing helpers for DocPad plugins\n\n<!-- INSTALL/ -->\n\n<h2>Install</h2>\n\n<a href=\"https://npmjs.com\" title=\"npm is a package manager for javascript\"><h3>npm</h3></a>\n<ul>\n<li>Install: <code>npm install --save @bevry/pluginloader</code></li>\n<li>Import: <code>import pkg from ('@bevry/pluginloader')</code></li>\n<li>Require: <code>const pkg = require('@bevry/pluginloader').default</code></li>\n</ul>\n\n<h3><a href=\"https://editions.bevry.me\" title=\"Editions are the best way to produce and consume packages you care about.\">Editions</a></h3>\n\n<p>This package is published with the following editions:</p>\n\n<ul><li><code>@bevry/pluginloader/source/index.ts</code> is <a href=\"https://www.typescriptlang.org/\" title=\"TypeScript is a typed superset of JavaScript that compiles to plain JavaScript. \">TypeScript</a> source code with <a href=\"https://babeljs.io/docs/learn-es2015/#modules\" title=\"ECMAScript Modules\">Import</a> for modules</li>\n<li><code>@bevry/pluginloader</code> aliases <code>@bevry/pluginloader/edition-esnext/index.js</code></li>\n<li><code>@bevry/pluginloader/edition-esnext/index.js</code> is <a href=\"https://www.typescriptlang.org/\" title=\"TypeScript is a typed superset of JavaScript that compiles to plain JavaScript. \">TypeScript</a> compiled against <a href=\"https://en.wikipedia.org/wiki/ECMAScript#ES.Next\" title=\"ECMAScript Next\">ESNext</a> for <a href=\"https://nodejs.org\" title=\"Node.js is a JavaScript runtime built on Chrome's V8 JavaScript engine\">Node.js</a> with <a href=\"https://nodejs.org/dist/latest-v5.x/docs/api/modules.html\" title=\"Node/CJS Modules\">Require</a> for modules</li></ul>\n\n<!-- /INSTALL -->\n\n\n<!-- HISTORY/ -->\n\n<h2>History</h2>\n\n<a href=\"https://github.com/bevry/pluginloader/blob/master/HISTORY.md#files\">Discover the release history by heading on over to the <code>HISTORY.md</code> file.</a>\n\n<!-- /HISTORY -->\n\n\n<!-- CONTRIBUTE/ -->\n\n<h2>Contribute</h2>\n\n<a href=\"https://github.com/bevry/pluginloader/blob/master/CONTRIBUTING.md#files\">Discover how you can contribute by heading on over to the <code>CONTRIBUTING.md</code> file.</a>\n\n<!-- /CONTRIBUTE -->\n\n\n<!-- BACKERS/ -->\n\n<h2>Backers</h2>\n\n<h3>Maintainers</h3>\n\nThese amazing people are maintaining this project:\n\n<ul><li><a href=\"https://balupton.com\">Benjamin Lupton</a> — <a href=\"https://github.com/bevry/pluginloader/commits?author=balupton\" title=\"View the GitHub contributions of Benjamin Lupton on repository bevry/pluginloader\">view contributions</a></li></ul>\n\n<h3>Sponsors</h3>\n\nNo sponsors yet! Will you be the first?\n\n<span class=\"badge-githubsponsors\"><a href=\"https://github.com/sponsors/balupton\" title=\"Donate to this project using GitHub Sponsors\"><img src=\"https://img.shields.io/badge/github-donate-yellow.svg\" alt=\"GitHub Sponsors donate button\" /></a></span>\n<span class=\"badge-patreon\"><a href=\"https://patreon.com/bevry\" title=\"Donate to this project using Patreon\"><img src=\"https://img.shields.io/badge/patreon-donate-yellow.svg\" alt=\"Patreon donate button\" /></a></span>\n<span class=\"badge-flattr\"><a href=\"https://flattr.com/profile/balupton\" title=\"Donate to this project using Flattr\"><img src=\"https://img.shields.io/badge/flattr-donate-yellow.svg\" alt=\"Flattr donate button\" /></a></span>\n<span class=\"badge-liberapay\"><a href=\"https://liberapay.com/bevry\" title=\"Donate to this project using Liberapay\"><img src=\"https://img.shields.io/badge/liberapay-donate-yellow.svg\" alt=\"Liberapay donate button\" /></a></span>\n<span class=\"badge-buymeacoffee\"><a href=\"https://buymeacoffee.com/balupton\" title=\"Donate to this project using Buy Me A Coffee\"><img src=\"https://img.shields.io/badge/buy%20me%20a%20coffee-donate-yellow.svg\" alt=\"Buy Me A Coffee donate button\" /></a></span>\n<span class=\"badge-opencollective\"><a href=\"https://opencollective.com/bevry\" title=\"Donate to this project using Open Collective\"><img src=\"https://img.shields.io/badge/open%20collective-donate-yellow.svg\" alt=\"Open Collective donate button\" /></a></span>\n<span class=\"badge-crypto\"><a href=\"https://bevry.me/crypto\" title=\"Donate to this project using Cryptocurrency\"><img src=\"https://img.shields.io/badge/crypto-donate-yellow.svg\" alt=\"crypto donate button\" /></a></span>\n<span class=\"badge-paypal\"><a href=\"https://bevry.me/paypal\" title=\"Donate to this project using Paypal\"><img src=\"https://img.shields.io/badge/paypal-donate-yellow.svg\" alt=\"PayPal donate button\" /></a></span>\n<span class=\"badge-wishlist\"><a href=\"https://bevry.me/wishlist\" title=\"Buy an item on our wishlist for us\"><img src=\"https://img.shields.io/badge/wishlist-donate-yellow.svg\" alt=\"Wishlist browse button\" /></a></span>\n\n<h3>Contributors</h3>\n\nThese amazing people have contributed code to this project:\n\n<ul><li><a href=\"https://balupton.com\">Benjamin Lupton</a> — <a href=\"https://github.com/bevry/pluginloader/commits?author=balupton\" title=\"View the GitHub contributions of Benjamin Lupton on repository bevry/pluginloader\">view contributions</a></li></ul>\n\n<a href=\"https://github.com/bevry/pluginloader/blob/master/CONTRIBUTING.md#files\">Discover how you can contribute by heading on over to the <code>CONTRIBUTING.md</code> file.</a>\n\n<!-- /BACKERS -->\n\n\n<!-- LICENSE/ -->\n\n<h2>License</h2>\n\nUnless stated otherwise all works are:\n\n<ul><li>Copyright &copy; 2018+ <a href=\"https://balupton.com\">Benjamin Lupton</a></li></ul>\n\nand licensed under:\n\n<ul><li><a href=\"http://spdx.org/licenses/MIT.html\">MIT License</a></li></ul>\n\n<!-- /LICENSE -->\n","readmeFilename":"README.md","_id":"@bevry/pluginloader@4.5.0-next.1592598242.aa9cb088d7b0a262e4719668b239308da2cb5405","_nodeVersion":"14.4.0","_npmVersion":"6.14.5","dist":{"integrity":"sha512-qeQomscMfeHrLWxtM0ivVQGnlP7SzzW4HGkm16qp2d59wERop20KlCVj5m4bmVMrLqFpLI5/dOE5TZAPIO8DDQ==","shasum":"eec53293dc0910ad5ae8f3f19844f647034cd4c9","tarball":"https://registry.npmjs.org/@bevry/pluginloader/-/pluginloader-4.5.0-next.1592598242.aa9cb088d7b0a262e4719668b239308da2cb5405.tgz","fileCount":10,"unpackedSize":45538,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe7R7kCRA9TVsSAnZWagAA1rUP/RLvModOS3tNIYpWw2Lo\nDnxd595850LtYKeE4j3hSliAslQhsesATCT1aqI6T22eEIlG9nYmhAUKykgb\n+frnyDpAA9FgtRsQP0Dms1KB6d4wiat6Df/XuOv0Jg4+7KeqdlGaUq7RoCet\nbyGBlQBs/Z2/X0jM6e7w8OP7slj9648PS2nizjxU0KatyOCjOrSQ3EIVJ1g5\n2blBhxNY5jA24wEZLBVap/UKUPV/IlaoYFOz+YboVlC6F0xokVqgBiOfpm+c\n/Kxcze41GS1+w/GlriGBupbsBB8fI3kBUpy8ReCHX/mlbjqAP1z53lm5QKTM\ni7XPjoTxBMkVw0fwOE2EWChhHyyEWmnwJ9ztt4Qx3WthQX4wisZEnsehGIih\nwom211P7Yrsg9YlhQDGzCcrNkxbRImYC9kr0V4nvE5zMTrSv3SFESCnM7yNq\n9WG7kzue5nCyMILRt2KveCjUESqNo9l7ruizn212W35lSlPzIPjUsZhj511T\n2Di9ExGHLl4/ESoeqUWoG8xu78RUhwVC1R5OLtIK3Fkk7jmqufQUnlYqAGFP\nU3Wudb+LhZBtkJhEO6OCqxEwav80tImBI1f67x2brT2KqRzX2g2oIWGKfBXi\nhy6dITnuTUX+esWo5zBJ60w8Bj4O7fA48NNxMBSJpr4bn1RmS/Zy7uuHAUIa\n6KMb\r\n=fEOm\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGHUf/EJm6RTeZnetS08PAu/kXWZ9CnpvzeCanQ3HcTYAiBZh7EgfaKnpaU6BX/U3ZD5qrceJFzqrxpYY7xODx2Pvw=="}]},"_npmUser":{"name":"bevryme","email":"us@bevry.me"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/pluginloader_4.5.0-next.1592598242.aa9cb088d7b0a262e4719668b239308da2cb5405_1592598244023_0.5364115522523021"},"_hasShrinkwrap":false},"4.5.0-next.1592598477.80d2d5a4d96e0beadec09e2681a03653e0e16b1e":{"name":"@bevry/pluginloader","version":"4.5.0-next.1592598477.80d2d5a4d96e0beadec09e2681a03653e0e16b1e","description":"A class for loading, verifying, and creating plugins. Used by DocPad for years.","homepage":"https://github.com/bevry/pluginloader","license":"MIT","keywords":["bevry","docpad","export-default","loader","node","plugin","plugins","typed","types","typescript"],"badges":{"list":["travisci","npmversion","npmdownloads","daviddm","daviddmdev","---","githubsponsors","patreon","flattr","liberapay","buymeacoffee","opencollective","crypto","paypal","wishlist"],"config":{"githubSponsorsUsername":"balupton","buymeacoffeeUsername":"balupton","cryptoURL":"https://bevry.me/crypto","flattrUsername":"balupton","liberapayUsername":"bevry","opencollectiveUsername":"bevry","patreonUsername":"bevry","paypalURL":"https://bevry.me/paypal","wishlistURL":"https://bevry.me/wishlist","travisTLD":"com","githubUsername":"bevry","githubRepository":"pluginloader","githubSlug":"bevry/pluginloader","npmPackageName":"@bevry/pluginloader"}},"funding":"https://bevry.me/fund","author":{"name":"2018+ Benjamin Lupton","email":"b@lupton.cc","url":"https://balupton.com"},"maintainers":[{"email":"b@lupton.cc","name":"balupton"},{"email":"us@bevry.me","name":"bevryme"},{"email":"sumitrai96@gmail.com","name":"sumitrai"}],"contributors":[{"name":"Benjamin Lupton","email":"b@lupton.cc","url":"https://github.com/balupton"}],"bugs":{"url":"https://github.com/bevry/pluginloader/issues"},"repository":{"type":"git","url":"git+https://github.com/bevry/pluginloader.git"},"engines":{"node":">=10"},"editions":[{"description":"TypeScript source code with Import for modules","directory":"source","entry":"index.ts","tags":["typescript","import"],"engines":false},{"description":"TypeScript compiled against ESNext for Node.js with Require for modules","directory":"edition-esnext","entry":"index.js","tags":["javascript","esnext","require"],"engines":{"node":"10 || 12 || 13 || 14"}}],"types":"./compiled-types/","type":"commonjs","main":"edition-esnext/index.js","dependencies":{"errlop":"^3.6.0","semver":"^7.3.2","typechecker":"^7.5.0"},"devDependencies":{"@bevry/update-contributors":"^1.9.0","@typescript-eslint/eslint-plugin":"^3.2.0","@typescript-eslint/parser":"^3.2.0","assert-helpers":"^6.8.0","eslint":"^7.2.0","eslint-config-bevry":"^3.9.0","eslint-config-prettier":"^6.11.0","eslint-plugin-prettier":"^3.1.3","kava":"^5.5.0","make-deno-edition":"^0.3.0","prettier":"^2.0.5","projectz":"^2.6.0","surge":"^0.21.3","typedoc":"^0.17.7","typescript":"^3.9.5","valid-directory":"^2.3.0"},"scripts":{"our:clean":"rm -Rf ./docs ./edition* ./es2015 ./es5 ./out ./.next","our:compile":"npm run our:compile:deno && npm run our:compile:edition-esnext && npm run our:compile:types","our:compile:deno":"make-deno-edition --attempt","our:compile:edition-esnext":"tsc --module commonjs --target ESNext --outDir ./edition-esnext --project tsconfig.json && ( test ! -d edition-esnext/source || ( mv edition-esnext/source edition-temp && rm -Rf edition-esnext && mv edition-temp edition-esnext ) )","our:compile:types":"tsc --project tsconfig.json --emitDeclarationOnly --declaration --declarationMap --declarationDir ./compiled-types && ( test ! -d compiled-types/source || ( mv compiled-types/source edition-temp && rm -Rf compiled-types && mv edition-temp compiled-types ) )","our:deploy":"echo no need for this project","our:meta":"npm run our:meta:contributors && npm run our:meta:docs && npm run our:meta:projectz","our:meta:contributors":"update-contributors","our:meta:docs":"npm run our:meta:docs:typedoc","our:meta:docs:typedoc":"rm -Rf ./docs && typedoc --mode file --exclude '**/+(*test*|node_modules)' --excludeExternals --name \"$npm_package_name\" --readme ./README.md --out ./docs ./source","our:meta:projectz":"projectz compile","our:release":"npm run our:release:prepare && npm run our:release:check-changelog && npm run our:release:check-dirty && npm run our:release:tag && npm run our:release:push","our:release:check-changelog":"cat ./HISTORY.md | grep v$npm_package_version || (echo add a changelog entry for v$npm_package_version && exit -1)","our:release:check-dirty":"git diff --exit-code","our:release:prepare":"npm run our:clean && npm run our:compile && npm run our:test && npm run our:meta","our:release:push":"git push origin master && git push origin --tags","our:release:tag":"export MESSAGE=$(cat ./HISTORY.md | sed -n \"/## v$npm_package_version/,/##/p\" | sed 's/## //' | awk 'NR>1{print buf}{buf = $0}') && test \"$MESSAGE\" || (echo 'proper changelog entry not found' && exit -1) && git tag v$npm_package_version -am \"$MESSAGE\"","our:setup":"npm run our:setup:install","our:setup:install":"npm install","our:test":"npm run our:verify && npm test","our:verify":"npm run our:verify:directory && npm run our:verify:eslint && npm run our:verify:prettier","our:verify:directory":"valid-directory","our:verify:eslint":"eslint --fix --ignore-pattern '**/*.d.ts' --ignore-pattern '**/vendor/' --ignore-pattern '**/node_modules/' --ext .mjs,.js,.jsx,.ts,.tsx ./source","our:verify:prettier":"prettier --write .","test":"node ./edition-esnext/test.js"},"eslintConfig":{"extends":["bevry"]},"prettier":{"semi":false,"singleQuote":true},"gitHead":"80d2d5a4d96e0beadec09e2681a03653e0e16b1e","readme":"<!-- TITLE/ -->\n\n<h1>@bevry/pluginloader</h1>\n\n<!-- /TITLE -->\n\n\n<!-- BADGES/ -->\n\n<span class=\"badge-travisci\"><a href=\"http://travis-ci.com/bevry/pluginloader\" title=\"Check this project's build status on TravisCI\"><img src=\"https://img.shields.io/travis/com/bevry/pluginloader/master.svg\" alt=\"Travis CI Build Status\" /></a></span>\n<span class=\"badge-npmversion\"><a href=\"https://npmjs.org/package/@bevry/pluginloader\" title=\"View this project on NPM\"><img src=\"https://img.shields.io/npm/v/@bevry/pluginloader.svg\" alt=\"NPM version\" /></a></span>\n<span class=\"badge-npmdownloads\"><a href=\"https://npmjs.org/package/@bevry/pluginloader\" title=\"View this project on NPM\"><img src=\"https://img.shields.io/npm/dm/@bevry/pluginloader.svg\" alt=\"NPM downloads\" /></a></span>\n<span class=\"badge-daviddm\"><a href=\"https://david-dm.org/bevry/pluginloader\" title=\"View the status of this project's dependencies on DavidDM\"><img src=\"https://img.shields.io/david/bevry/pluginloader.svg\" alt=\"Dependency Status\" /></a></span>\n<span class=\"badge-daviddmdev\"><a href=\"https://david-dm.org/bevry/pluginloader#info=devDependencies\" title=\"View the status of this project's development dependencies on DavidDM\"><img src=\"https://img.shields.io/david/dev/bevry/pluginloader.svg\" alt=\"Dev Dependency Status\" /></a></span>\n<br class=\"badge-separator\" />\n<span class=\"badge-githubsponsors\"><a href=\"https://github.com/sponsors/balupton\" title=\"Donate to this project using GitHub Sponsors\"><img src=\"https://img.shields.io/badge/github-donate-yellow.svg\" alt=\"GitHub Sponsors donate button\" /></a></span>\n<span class=\"badge-patreon\"><a href=\"https://patreon.com/bevry\" title=\"Donate to this project using Patreon\"><img src=\"https://img.shields.io/badge/patreon-donate-yellow.svg\" alt=\"Patreon donate button\" /></a></span>\n<span class=\"badge-flattr\"><a href=\"https://flattr.com/profile/balupton\" title=\"Donate to this project using Flattr\"><img src=\"https://img.shields.io/badge/flattr-donate-yellow.svg\" alt=\"Flattr donate button\" /></a></span>\n<span class=\"badge-liberapay\"><a href=\"https://liberapay.com/bevry\" title=\"Donate to this project using Liberapay\"><img src=\"https://img.shields.io/badge/liberapay-donate-yellow.svg\" alt=\"Liberapay donate button\" /></a></span>\n<span class=\"badge-buymeacoffee\"><a href=\"https://buymeacoffee.com/balupton\" title=\"Donate to this project using Buy Me A Coffee\"><img src=\"https://img.shields.io/badge/buy%20me%20a%20coffee-donate-yellow.svg\" alt=\"Buy Me A Coffee donate button\" /></a></span>\n<span class=\"badge-opencollective\"><a href=\"https://opencollective.com/bevry\" title=\"Donate to this project using Open Collective\"><img src=\"https://img.shields.io/badge/open%20collective-donate-yellow.svg\" alt=\"Open Collective donate button\" /></a></span>\n<span class=\"badge-crypto\"><a href=\"https://bevry.me/crypto\" title=\"Donate to this project using Cryptocurrency\"><img src=\"https://img.shields.io/badge/crypto-donate-yellow.svg\" alt=\"crypto donate button\" /></a></span>\n<span class=\"badge-paypal\"><a href=\"https://bevry.me/paypal\" title=\"Donate to this project using Paypal\"><img src=\"https://img.shields.io/badge/paypal-donate-yellow.svg\" alt=\"PayPal donate button\" /></a></span>\n<span class=\"badge-wishlist\"><a href=\"https://bevry.me/wishlist\" title=\"Buy an item on our wishlist for us\"><img src=\"https://img.shields.io/badge/wishlist-donate-yellow.svg\" alt=\"Wishlist browse button\" /></a></span>\n\n<!-- /BADGES -->\n\n\n<!-- DESCRIPTION/ -->\n\nA class for loading, verifying, and creating plugins. Used by DocPad for years.\n\n<!-- /DESCRIPTION -->\n\n\n## Usage\n\n[Complete API Documentation.](http://master.pluginloader.bevry.surge.sh/docs/globals.html)\n\n### Basics\n\nCreate your project:\n\n1. `mkdir my-project`\n1. `cd my-project`\n\nCreate your plugin:\n\n1. `mkdir myplugin`\n1. `cd myplugin`\n1. `npm init`\n1. `index.js` to:\n\n    ```javascript\n    module.exports = function (BasePlugin) {\n        return class MyPlugin extends BasePlugin {\n            constructor(...args) {\n                super(...args)\n                console.log('hello from my plugin')\n            }\n        }\n    }\n    ```\n\n1. `cd ..`\n\nCreate your plugin loader:\n\n1. `mkdir myapp`\n1. `cd myapp`\n1. `npm init`\n1. `index.js` to:\n\n    ```javascript\n    import PluginLoader from '@bevry/pluginloader'\n\n    class BasePlugin {\n        constructor() {\n            console.log('hello from base plugin')\n        }\n    }\n\n    const pluginLoader = new PluginLoader({\n        BasePlugin,\n        pluginPath: require('path').resolve(__dirname, '..', 'myplugin'),\n    })\n    ```\n\n1. `cd ..`\n\nRun the project:\n\n1. `node myapp/index.js`\n\n### Ecosystem\n\n-   [pluginclerk](https://github.com/bevry/pluginclerk) a project for fetching compatible plugins from the npm registry\n-   [docpad-baseplugin](https://github.com/docpad/docpad-baseplugin) the BasePlugin class that DocPad uses\n-   [docpad-plugintester](https://github.com/docpad/docpad-plugintester) testing helpers for DocPad plugins\n\n<!-- INSTALL/ -->\n\n<h2>Install</h2>\n\n<a href=\"https://npmjs.com\" title=\"npm is a package manager for javascript\"><h3>npm</h3></a>\n<ul>\n<li>Install: <code>npm install --save @bevry/pluginloader</code></li>\n<li>Import: <code>import pkg from ('@bevry/pluginloader')</code></li>\n<li>Require: <code>const pkg = require('@bevry/pluginloader').default</code></li>\n</ul>\n\n<h3><a href=\"https://editions.bevry.me\" title=\"Editions are the best way to produce and consume packages you care about.\">Editions</a></h3>\n\n<p>This package is published with the following editions:</p>\n\n<ul><li><code>@bevry/pluginloader/source/index.ts</code> is <a href=\"https://www.typescriptlang.org/\" title=\"TypeScript is a typed superset of JavaScript that compiles to plain JavaScript. \">TypeScript</a> source code with <a href=\"https://babeljs.io/docs/learn-es2015/#modules\" title=\"ECMAScript Modules\">Import</a> for modules</li>\n<li><code>@bevry/pluginloader</code> aliases <code>@bevry/pluginloader/edition-esnext/index.js</code></li>\n<li><code>@bevry/pluginloader/edition-esnext/index.js</code> is <a href=\"https://www.typescriptlang.org/\" title=\"TypeScript is a typed superset of JavaScript that compiles to plain JavaScript. \">TypeScript</a> compiled against <a href=\"https://en.wikipedia.org/wiki/ECMAScript#ES.Next\" title=\"ECMAScript Next\">ESNext</a> for <a href=\"https://nodejs.org\" title=\"Node.js is a JavaScript runtime built on Chrome's V8 JavaScript engine\">Node.js</a> with <a href=\"https://nodejs.org/dist/latest-v5.x/docs/api/modules.html\" title=\"Node/CJS Modules\">Require</a> for modules</li></ul>\n\n<!-- /INSTALL -->\n\n\n<!-- HISTORY/ -->\n\n<h2>History</h2>\n\n<a href=\"https://github.com/bevry/pluginloader/blob/master/HISTORY.md#files\">Discover the release history by heading on over to the <code>HISTORY.md</code> file.</a>\n\n<!-- /HISTORY -->\n\n\n<!-- CONTRIBUTE/ -->\n\n<h2>Contribute</h2>\n\n<a href=\"https://github.com/bevry/pluginloader/blob/master/CONTRIBUTING.md#files\">Discover how you can contribute by heading on over to the <code>CONTRIBUTING.md</code> file.</a>\n\n<!-- /CONTRIBUTE -->\n\n\n<!-- BACKERS/ -->\n\n<h2>Backers</h2>\n\n<h3>Maintainers</h3>\n\nThese amazing people are maintaining this project:\n\n<ul><li><a href=\"https://balupton.com\">Benjamin Lupton</a> — <a href=\"https://github.com/bevry/pluginloader/commits?author=balupton\" title=\"View the GitHub contributions of Benjamin Lupton on repository bevry/pluginloader\">view contributions</a></li></ul>\n\n<h3>Sponsors</h3>\n\nNo sponsors yet! Will you be the first?\n\n<span class=\"badge-githubsponsors\"><a href=\"https://github.com/sponsors/balupton\" title=\"Donate to this project using GitHub Sponsors\"><img src=\"https://img.shields.io/badge/github-donate-yellow.svg\" alt=\"GitHub Sponsors donate button\" /></a></span>\n<span class=\"badge-patreon\"><a href=\"https://patreon.com/bevry\" title=\"Donate to this project using Patreon\"><img src=\"https://img.shields.io/badge/patreon-donate-yellow.svg\" alt=\"Patreon donate button\" /></a></span>\n<span class=\"badge-flattr\"><a href=\"https://flattr.com/profile/balupton\" title=\"Donate to this project using Flattr\"><img src=\"https://img.shields.io/badge/flattr-donate-yellow.svg\" alt=\"Flattr donate button\" /></a></span>\n<span class=\"badge-liberapay\"><a href=\"https://liberapay.com/bevry\" title=\"Donate to this project using Liberapay\"><img src=\"https://img.shields.io/badge/liberapay-donate-yellow.svg\" alt=\"Liberapay donate button\" /></a></span>\n<span class=\"badge-buymeacoffee\"><a href=\"https://buymeacoffee.com/balupton\" title=\"Donate to this project using Buy Me A Coffee\"><img src=\"https://img.shields.io/badge/buy%20me%20a%20coffee-donate-yellow.svg\" alt=\"Buy Me A Coffee donate button\" /></a></span>\n<span class=\"badge-opencollective\"><a href=\"https://opencollective.com/bevry\" title=\"Donate to this project using Open Collective\"><img src=\"https://img.shields.io/badge/open%20collective-donate-yellow.svg\" alt=\"Open Collective donate button\" /></a></span>\n<span class=\"badge-crypto\"><a href=\"https://bevry.me/crypto\" title=\"Donate to this project using Cryptocurrency\"><img src=\"https://img.shields.io/badge/crypto-donate-yellow.svg\" alt=\"crypto donate button\" /></a></span>\n<span class=\"badge-paypal\"><a href=\"https://bevry.me/paypal\" title=\"Donate to this project using Paypal\"><img src=\"https://img.shields.io/badge/paypal-donate-yellow.svg\" alt=\"PayPal donate button\" /></a></span>\n<span class=\"badge-wishlist\"><a href=\"https://bevry.me/wishlist\" title=\"Buy an item on our wishlist for us\"><img src=\"https://img.shields.io/badge/wishlist-donate-yellow.svg\" alt=\"Wishlist browse button\" /></a></span>\n\n<h3>Contributors</h3>\n\nThese amazing people have contributed code to this project:\n\n<ul><li><a href=\"https://balupton.com\">Benjamin Lupton</a> — <a href=\"https://github.com/bevry/pluginloader/commits?author=balupton\" title=\"View the GitHub contributions of Benjamin Lupton on repository bevry/pluginloader\">view contributions</a></li></ul>\n\n<a href=\"https://github.com/bevry/pluginloader/blob/master/CONTRIBUTING.md#files\">Discover how you can contribute by heading on over to the <code>CONTRIBUTING.md</code> file.</a>\n\n<!-- /BACKERS -->\n\n\n<!-- LICENSE/ -->\n\n<h2>License</h2>\n\nUnless stated otherwise all works are:\n\n<ul><li>Copyright &copy; 2018+ <a href=\"https://balupton.com\">Benjamin Lupton</a></li></ul>\n\nand licensed under:\n\n<ul><li><a href=\"http://spdx.org/licenses/MIT.html\">MIT License</a></li></ul>\n\n<!-- /LICENSE -->\n","readmeFilename":"README.md","_id":"@bevry/pluginloader@4.5.0-next.1592598477.80d2d5a4d96e0beadec09e2681a03653e0e16b1e","_nodeVersion":"14.4.0","_npmVersion":"6.14.5","dist":{"integrity":"sha512-jOgS/WdUaMo5JaCzr+8JgimOC1Wpew4lHxf4uDiFAjfuDbQ45owNFVG39qYWYHgKP6YlaxwCdV7z+sX1sNQ+8Q==","shasum":"67f016d24f717145220cb755a4e99198674b7256","tarball":"https://registry.npmjs.org/@bevry/pluginloader/-/pluginloader-4.5.0-next.1592598477.80d2d5a4d96e0beadec09e2681a03653e0e16b1e.tgz","fileCount":10,"unpackedSize":45536,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe7R/PCRA9TVsSAnZWagAAAfgP/i0hy9+q3MqrqthilIjc\neFdOXvskoTpOF+9jmruWlT7FZvU+w4gWYXHCMEv9dKHedbrADcFGwKUjyVXN\nwsqdsO6qNR/M3xktskVtSmhq7qh41SHMbYnoDvSYqoUuWJwQWVVDtdhcLanp\ntOCiG9eQ/3P5xali4DcWZLXVHf+fxbbGJgwXQp60FbySdLV0/PHwThZ8pPiY\nU5FjoOZOjdGyOHxE38H9k/1ksqeBxUPBmSt/RsJMSSQy+kCQW5TOORKa6ihJ\nZ0jWHeVS2l17aYRvi2SYm33Tm2+537XOKApHQQ4tZAjRVW4AU0bMCTZ3J0VO\nptI51uv2HykijqejKoPrfPGSxz18mb98lamcC40iMyhef6rSRwLXhKflh+nH\nWw17pXOAiw53LmIwV1HCSrYfUX6W3I4NSg2fx2IXYNbf7V4qgyiATiXxhlD9\nV7/JqCKXUL18UDxp1dOTenJFlwo0prrHje/icxC24teooDJsyPqR+WSBjFQP\ngR0Po6W2Ytu5M7XDC7cIspvqFTPN1hxiXH9bk5iE5piAben7eu6mWbhvvZXk\n9HK7zjgTrHBMWn+T4Rv9NYW05ZoFRUzZcU+NBZ7yDrz1Qu+Nd5k09WZ9MY0R\nf3fkPwen8pG/hNQUegLPcJomqmZYMlKcrHv9XmgA8XFcnvIkIpRO2KnBEQm9\nc2PK\r\n=EZFz\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIB0vvZdFEMVn0Bl4ZCNIn9Sk/PY0tJ8tJNhdWAQo3lr6AiEAgTcYW7IDYN7ODBaNYrELuY9KQIWUo3frJU1bTG4p55k="}]},"_npmUser":{"name":"bevryme","email":"us@bevry.me"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/pluginloader_4.5.0-next.1592598477.80d2d5a4d96e0beadec09e2681a03653e0e16b1e_1592598478952_0.41087632225853343"},"_hasShrinkwrap":false},"4.6.0-next.1592632909.510c6ee729f4e24f7e4b3719d48f18a0c4929522":{"name":"@bevry/pluginloader","version":"4.6.0-next.1592632909.510c6ee729f4e24f7e4b3719d48f18a0c4929522","description":"A class for loading, verifying, and creating plugins. Used by DocPad for years.","homepage":"https://github.com/bevry/pluginloader","license":"MIT","keywords":["bevry","docpad","export-default","loader","node","plugin","plugins","typed","types","typescript"],"badges":{"list":["travisci","npmversion","npmdownloads","daviddm","daviddmdev","---","githubsponsors","patreon","flattr","liberapay","buymeacoffee","opencollective","crypto","paypal","wishlist"],"config":{"githubSponsorsUsername":"balupton","buymeacoffeeUsername":"balupton","cryptoURL":"https://bevry.me/crypto","flattrUsername":"balupton","liberapayUsername":"bevry","opencollectiveUsername":"bevry","patreonUsername":"bevry","paypalURL":"https://bevry.me/paypal","wishlistURL":"https://bevry.me/wishlist","travisTLD":"com","githubUsername":"bevry","githubRepository":"pluginloader","githubSlug":"bevry/pluginloader","npmPackageName":"@bevry/pluginloader"}},"funding":"https://bevry.me/fund","author":{"name":"2018+ Benjamin Lupton","email":"b@lupton.cc","url":"https://balupton.com"},"maintainers":[{"email":"b@lupton.cc","name":"balupton"},{"email":"us@bevry.me","name":"bevryme"},{"email":"sumitrai96@gmail.com","name":"sumitrai"}],"contributors":[{"name":"Benjamin Lupton","email":"b@lupton.cc","url":"https://github.com/balupton"}],"bugs":{"url":"https://github.com/bevry/pluginloader/issues"},"repository":{"type":"git","url":"git+https://github.com/bevry/pluginloader.git"},"engines":{"node":">=10"},"editions":[{"description":"TypeScript source code with Import for modules","directory":"source","entry":"index.ts","tags":["typescript","import"],"engines":false},{"description":"TypeScript compiled against ESNext for Node.js with Require for modules","directory":"edition-esnext","entry":"index.js","tags":["javascript","esnext","require"],"engines":{"node":"10 || 12 || 13 || 14"}}],"types":"./compiled-types/","type":"commonjs","main":"edition-esnext/index.js","dependencies":{"errlop":"^3.7.0","semver":"^7.3.2","typechecker":"^7.6.0","@bevry/update-contributors":"^1.10.0","@typescript-eslint/eslint-plugin":"^3.3.0","@typescript-eslint/parser":"^3.3.0","assert-helpers":"^6.10.0","eslint":"^7.3.0","eslint-config-bevry":"^3.10.0","eslint-config-prettier":"^6.11.0","eslint-plugin-prettier":"^3.1.4","kava":"^5.6.0","make-deno-edition":"^0.9.0","prettier":"^2.0.5","projectz":"^2.7.0","surge":"^0.21.3","typedoc":"^0.17.7","typescript":"^3.9.5","valid-directory":"^2.4.0"},"devDependencies":{"@bevry/update-contributors":"^1.10.0","@typescript-eslint/eslint-plugin":"^3.3.0","@typescript-eslint/parser":"^3.3.0","assert-helpers":"^6.10.0","eslint":"^7.3.0","eslint-config-bevry":"^3.10.0","eslint-config-prettier":"^6.11.0","eslint-plugin-prettier":"^3.1.4","kava":"^5.6.0","make-deno-edition":"^0.9.0","prettier":"^2.0.5","projectz":"^2.7.0","surge":"^0.21.3","typedoc":"^0.17.7","typescript":"^3.9.5","valid-directory":"^2.4.0"},"scripts":{"our:clean":"rm -Rf ./docs ./edition* ./es2015 ./es5 ./out ./.next","our:compile":"npm run our:compile:deno && npm run our:compile:edition-esnext && npm run our:compile:types","our:compile:deno":"make-deno-edition --attempt","our:compile:edition-esnext":"tsc --module commonjs --target ESNext --outDir ./edition-esnext --project tsconfig.json && ( test ! -d edition-esnext/source || ( mv edition-esnext/source edition-temp && rm -Rf edition-esnext && mv edition-temp edition-esnext ) )","our:compile:types":"tsc --project tsconfig.json --emitDeclarationOnly --declaration --declarationMap --declarationDir ./compiled-types && ( test ! -d compiled-types/source || ( mv compiled-types/source edition-temp && rm -Rf compiled-types && mv edition-temp compiled-types ) )","our:deploy":"echo no need for this project","our:meta":"npm run our:meta:contributors && npm run our:meta:docs && npm run our:meta:projectz","our:meta:contributors":"update-contributors","our:meta:docs":"npm run our:meta:docs:typedoc","our:meta:docs:typedoc":"rm -Rf ./docs && typedoc --mode file --exclude '**/+(*test*|node_modules)' --excludeExternals --name \"$npm_package_name\" --readme ./README.md --out ./docs ./source","our:meta:projectz":"projectz compile","our:release":"npm run our:release:prepare && npm run our:release:check-changelog && npm run our:release:check-dirty && npm run our:release:tag && npm run our:release:push","our:release:check-changelog":"cat ./HISTORY.md | grep v$npm_package_version || (echo add a changelog entry for v$npm_package_version && exit -1)","our:release:check-dirty":"git diff --exit-code","our:release:prepare":"npm run our:clean && npm run our:compile && npm run our:test && npm run our:meta","our:release:push":"git push origin master && git push origin --tags","our:release:tag":"export MESSAGE=$(cat ./HISTORY.md | sed -n \"/## v$npm_package_version/,/##/p\" | sed 's/## //' | awk 'NR>1{print buf}{buf = $0}') && test \"$MESSAGE\" || (echo 'proper changelog entry not found' && exit -1) && git tag v$npm_package_version -am \"$MESSAGE\"","our:setup":"npm run our:setup:install","our:setup:install":"npm install","our:test":"npm run our:verify && npm test","our:verify":"npm run our:verify:directory && npm run our:verify:eslint && npm run our:verify:prettier","our:verify:directory":"valid-directory","our:verify:eslint":"eslint --fix --ignore-pattern '**/*.d.ts' --ignore-pattern '**/vendor/' --ignore-pattern '**/node_modules/' --ext .mjs,.js,.jsx,.ts,.tsx ./source","our:verify:prettier":"prettier --write .","test":"node ./edition-esnext/test.js"},"eslintConfig":{"extends":["bevry"]},"prettier":{"semi":false,"singleQuote":true},"gitHead":"510c6ee729f4e24f7e4b3719d48f18a0c4929522","readme":"<!-- TITLE/ -->\n\n<h1>@bevry/pluginloader</h1>\n\n<!-- /TITLE -->\n\n\n<!-- BADGES/ -->\n\n<span class=\"badge-travisci\"><a href=\"http://travis-ci.com/bevry/pluginloader\" title=\"Check this project's build status on TravisCI\"><img src=\"https://img.shields.io/travis/com/bevry/pluginloader/master.svg\" alt=\"Travis CI Build Status\" /></a></span>\n<span class=\"badge-npmversion\"><a href=\"https://npmjs.org/package/@bevry/pluginloader\" title=\"View this project on NPM\"><img src=\"https://img.shields.io/npm/v/@bevry/pluginloader.svg\" alt=\"NPM version\" /></a></span>\n<span class=\"badge-npmdownloads\"><a href=\"https://npmjs.org/package/@bevry/pluginloader\" title=\"View this project on NPM\"><img src=\"https://img.shields.io/npm/dm/@bevry/pluginloader.svg\" alt=\"NPM downloads\" /></a></span>\n<span class=\"badge-daviddm\"><a href=\"https://david-dm.org/bevry/pluginloader\" title=\"View the status of this project's dependencies on DavidDM\"><img src=\"https://img.shields.io/david/bevry/pluginloader.svg\" alt=\"Dependency Status\" /></a></span>\n<span class=\"badge-daviddmdev\"><a href=\"https://david-dm.org/bevry/pluginloader#info=devDependencies\" title=\"View the status of this project's development dependencies on DavidDM\"><img src=\"https://img.shields.io/david/dev/bevry/pluginloader.svg\" alt=\"Dev Dependency Status\" /></a></span>\n<br class=\"badge-separator\" />\n<span class=\"badge-githubsponsors\"><a href=\"https://github.com/sponsors/balupton\" title=\"Donate to this project using GitHub Sponsors\"><img src=\"https://img.shields.io/badge/github-donate-yellow.svg\" alt=\"GitHub Sponsors donate button\" /></a></span>\n<span class=\"badge-patreon\"><a href=\"https://patreon.com/bevry\" title=\"Donate to this project using Patreon\"><img src=\"https://img.shields.io/badge/patreon-donate-yellow.svg\" alt=\"Patreon donate button\" /></a></span>\n<span class=\"badge-flattr\"><a href=\"https://flattr.com/profile/balupton\" title=\"Donate to this project using Flattr\"><img src=\"https://img.shields.io/badge/flattr-donate-yellow.svg\" alt=\"Flattr donate button\" /></a></span>\n<span class=\"badge-liberapay\"><a href=\"https://liberapay.com/bevry\" title=\"Donate to this project using Liberapay\"><img src=\"https://img.shields.io/badge/liberapay-donate-yellow.svg\" alt=\"Liberapay donate button\" /></a></span>\n<span class=\"badge-buymeacoffee\"><a href=\"https://buymeacoffee.com/balupton\" title=\"Donate to this project using Buy Me A Coffee\"><img src=\"https://img.shields.io/badge/buy%20me%20a%20coffee-donate-yellow.svg\" alt=\"Buy Me A Coffee donate button\" /></a></span>\n<span class=\"badge-opencollective\"><a href=\"https://opencollective.com/bevry\" title=\"Donate to this project using Open Collective\"><img src=\"https://img.shields.io/badge/open%20collective-donate-yellow.svg\" alt=\"Open Collective donate button\" /></a></span>\n<span class=\"badge-crypto\"><a href=\"https://bevry.me/crypto\" title=\"Donate to this project using Cryptocurrency\"><img src=\"https://img.shields.io/badge/crypto-donate-yellow.svg\" alt=\"crypto donate button\" /></a></span>\n<span class=\"badge-paypal\"><a href=\"https://bevry.me/paypal\" title=\"Donate to this project using Paypal\"><img src=\"https://img.shields.io/badge/paypal-donate-yellow.svg\" alt=\"PayPal donate button\" /></a></span>\n<span class=\"badge-wishlist\"><a href=\"https://bevry.me/wishlist\" title=\"Buy an item on our wishlist for us\"><img src=\"https://img.shields.io/badge/wishlist-donate-yellow.svg\" alt=\"Wishlist browse button\" /></a></span>\n\n<!-- /BADGES -->\n\n\n<!-- DESCRIPTION/ -->\n\nA class for loading, verifying, and creating plugins. Used by DocPad for years.\n\n<!-- /DESCRIPTION -->\n\n\n## Usage\n\n[Complete API Documentation.](http://master.pluginloader.bevry.surge.sh/docs/globals.html)\n\n### Basics\n\nCreate your project:\n\n1. `mkdir my-project`\n1. `cd my-project`\n\nCreate your plugin:\n\n1. `mkdir myplugin`\n1. `cd myplugin`\n1. `npm init`\n1. `index.js` to:\n\n    ```javascript\n    module.exports = function (BasePlugin) {\n        return class MyPlugin extends BasePlugin {\n            constructor(...args) {\n                super(...args)\n                console.log('hello from my plugin')\n            }\n        }\n    }\n    ```\n\n1. `cd ..`\n\nCreate your plugin loader:\n\n1. `mkdir myapp`\n1. `cd myapp`\n1. `npm init`\n1. `index.js` to:\n\n    ```javascript\n    import PluginLoader from '@bevry/pluginloader'\n\n    class BasePlugin {\n        constructor() {\n            console.log('hello from base plugin')\n        }\n    }\n\n    const pluginLoader = new PluginLoader({\n        BasePlugin,\n        pluginPath: require('path').resolve(__dirname, '..', 'myplugin'),\n    })\n    ```\n\n1. `cd ..`\n\nRun the project:\n\n1. `node myapp/index.js`\n\n### Ecosystem\n\n-   [pluginclerk](https://github.com/bevry/pluginclerk) a project for fetching compatible plugins from the npm registry\n-   [docpad-baseplugin](https://github.com/docpad/docpad-baseplugin) the BasePlugin class that DocPad uses\n-   [docpad-plugintester](https://github.com/docpad/docpad-plugintester) testing helpers for DocPad plugins\n\n<!-- INSTALL/ -->\n\n<h2>Install</h2>\n\n<a href=\"https://npmjs.com\" title=\"npm is a package manager for javascript\"><h3>npm</h3></a>\n<ul>\n<li>Install: <code>npm install --save @bevry/pluginloader</code></li>\n<li>Import: <code>import pkg from ('@bevry/pluginloader')</code></li>\n<li>Require: <code>const pkg = require('@bevry/pluginloader').default</code></li>\n</ul>\n\n<h3><a href=\"https://editions.bevry.me\" title=\"Editions are the best way to produce and consume packages you care about.\">Editions</a></h3>\n\n<p>This package is published with the following editions:</p>\n\n<ul><li><code>@bevry/pluginloader/source/index.ts</code> is <a href=\"https://www.typescriptlang.org/\" title=\"TypeScript is a typed superset of JavaScript that compiles to plain JavaScript. \">TypeScript</a> source code with <a href=\"https://babeljs.io/docs/learn-es2015/#modules\" title=\"ECMAScript Modules\">Import</a> for modules</li>\n<li><code>@bevry/pluginloader</code> aliases <code>@bevry/pluginloader/edition-esnext/index.js</code></li>\n<li><code>@bevry/pluginloader/edition-esnext/index.js</code> is <a href=\"https://www.typescriptlang.org/\" title=\"TypeScript is a typed superset of JavaScript that compiles to plain JavaScript. \">TypeScript</a> compiled against <a href=\"https://en.wikipedia.org/wiki/ECMAScript#ES.Next\" title=\"ECMAScript Next\">ESNext</a> for <a href=\"https://nodejs.org\" title=\"Node.js is a JavaScript runtime built on Chrome's V8 JavaScript engine\">Node.js</a> with <a href=\"https://nodejs.org/dist/latest-v5.x/docs/api/modules.html\" title=\"Node/CJS Modules\">Require</a> for modules</li></ul>\n\n<!-- /INSTALL -->\n\n\n<!-- HISTORY/ -->\n\n<h2>History</h2>\n\n<a href=\"https://github.com/bevry/pluginloader/blob/master/HISTORY.md#files\">Discover the release history by heading on over to the <code>HISTORY.md</code> file.</a>\n\n<!-- /HISTORY -->\n\n\n<!-- CONTRIBUTE/ -->\n\n<h2>Contribute</h2>\n\n<a href=\"https://github.com/bevry/pluginloader/blob/master/CONTRIBUTING.md#files\">Discover how you can contribute by heading on over to the <code>CONTRIBUTING.md</code> file.</a>\n\n<!-- /CONTRIBUTE -->\n\n\n<!-- BACKERS/ -->\n\n<h2>Backers</h2>\n\n<h3>Maintainers</h3>\n\nThese amazing people are maintaining this project:\n\n<ul><li><a href=\"https://balupton.com\">Benjamin Lupton</a> — <a href=\"https://github.com/bevry/pluginloader/commits?author=balupton\" title=\"View the GitHub contributions of Benjamin Lupton on repository bevry/pluginloader\">view contributions</a></li></ul>\n\n<h3>Sponsors</h3>\n\nNo sponsors yet! Will you be the first?\n\n<span class=\"badge-githubsponsors\"><a href=\"https://github.com/sponsors/balupton\" title=\"Donate to this project using GitHub Sponsors\"><img src=\"https://img.shields.io/badge/github-donate-yellow.svg\" alt=\"GitHub Sponsors donate button\" /></a></span>\n<span class=\"badge-patreon\"><a href=\"https://patreon.com/bevry\" title=\"Donate to this project using Patreon\"><img src=\"https://img.shields.io/badge/patreon-donate-yellow.svg\" alt=\"Patreon donate button\" /></a></span>\n<span class=\"badge-flattr\"><a href=\"https://flattr.com/profile/balupton\" title=\"Donate to this project using Flattr\"><img src=\"https://img.shields.io/badge/flattr-donate-yellow.svg\" alt=\"Flattr donate button\" /></a></span>\n<span class=\"badge-liberapay\"><a href=\"https://liberapay.com/bevry\" title=\"Donate to this project using Liberapay\"><img src=\"https://img.shields.io/badge/liberapay-donate-yellow.svg\" alt=\"Liberapay donate button\" /></a></span>\n<span class=\"badge-buymeacoffee\"><a href=\"https://buymeacoffee.com/balupton\" title=\"Donate to this project using Buy Me A Coffee\"><img src=\"https://img.shields.io/badge/buy%20me%20a%20coffee-donate-yellow.svg\" alt=\"Buy Me A Coffee donate button\" /></a></span>\n<span class=\"badge-opencollective\"><a href=\"https://opencollective.com/bevry\" title=\"Donate to this project using Open Collective\"><img src=\"https://img.shields.io/badge/open%20collective-donate-yellow.svg\" alt=\"Open Collective donate button\" /></a></span>\n<span class=\"badge-crypto\"><a href=\"https://bevry.me/crypto\" title=\"Donate to this project using Cryptocurrency\"><img src=\"https://img.shields.io/badge/crypto-donate-yellow.svg\" alt=\"crypto donate button\" /></a></span>\n<span class=\"badge-paypal\"><a href=\"https://bevry.me/paypal\" title=\"Donate to this project using Paypal\"><img src=\"https://img.shields.io/badge/paypal-donate-yellow.svg\" alt=\"PayPal donate button\" /></a></span>\n<span class=\"badge-wishlist\"><a href=\"https://bevry.me/wishlist\" title=\"Buy an item on our wishlist for us\"><img src=\"https://img.shields.io/badge/wishlist-donate-yellow.svg\" alt=\"Wishlist browse button\" /></a></span>\n\n<h3>Contributors</h3>\n\nThese amazing people have contributed code to this project:\n\n<ul><li><a href=\"https://balupton.com\">Benjamin Lupton</a> — <a href=\"https://github.com/bevry/pluginloader/commits?author=balupton\" title=\"View the GitHub contributions of Benjamin Lupton on repository bevry/pluginloader\">view contributions</a></li></ul>\n\n<a href=\"https://github.com/bevry/pluginloader/blob/master/CONTRIBUTING.md#files\">Discover how you can contribute by heading on over to the <code>CONTRIBUTING.md</code> file.</a>\n\n<!-- /BACKERS -->\n\n\n<!-- LICENSE/ -->\n\n<h2>License</h2>\n\nUnless stated otherwise all works are:\n\n<ul><li>Copyright &copy; 2018+ <a href=\"https://balupton.com\">Benjamin Lupton</a></li></ul>\n\nand licensed under:\n\n<ul><li><a href=\"http://spdx.org/licenses/MIT.html\">MIT License</a></li></ul>\n\n<!-- /LICENSE -->\n","readmeFilename":"README.md","_id":"@bevry/pluginloader@4.6.0-next.1592632909.510c6ee729f4e24f7e4b3719d48f18a0c4929522","_nodeVersion":"14.4.0","_npmVersion":"6.14.5","dist":{"integrity":"sha512-OIWOgOt3VjL2BZc4Mf0fCsE9oqCD8nG4N4NTiaiQqFb0Qkn1Ka8ZYBQJjfmprazZKWcnXSLe2ezNIEUm/Cj9Nw==","shasum":"7f780adcd3f985c599204594221d80f2d3d7c27c","tarball":"https://registry.npmjs.org/@bevry/pluginloader/-/pluginloader-4.6.0-next.1592632909.510c6ee729f4e24f7e4b3719d48f18a0c4929522.tgz","fileCount":9,"unpackedSize":45998,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe7aZPCRA9TVsSAnZWagAAZdoP/36znPUa7J69z7NUTPXE\nEfy+ueUZUTboEqekxdwsdZq9Uzm8Quoaiz+9bcqE1Bts1zQ1bagzvaZ4zsk2\n7CN+xZxo6ZqgiirPN374thpbdVexvrl0Xo2AW4fvqWb018sG4zUOdtsEYi85\nUQ9D2zbxGRCbMN6BF+toZmj+zHOVLl17B+28071NCEIgLtgQ/xa2qV5zUiqi\nGAP+svUe7xxCUytRFjjNdB4D/NQXbgmo/pcLOjH+VVe5j+Aq9qOKc5R5HfrA\n6I7NqG0NG9YcGq1aJ9qyxJAoUgtU1RioUDuoKH4UK0EAQUUp/Hll6ezfJ19w\n8QqARR8oTR0GmxcvEGPe62Hcgh94NxGldcuiMF7O1pu1FkjDM6Kjlwgsaczp\nlsD01HIfeXp0ZYZsZW7PKtcRrfyElyqi7GdF3zMZ7BabQGdzbjTPZdkNSYCb\nDTEPbolBQNCeRXnhHyYODF9Rscotel/1nbGlwuUUOHSqthDbMI/KMCdmS6sk\nRETKK6NjvRINuLdwd96+RXlAPqYOMKgTkE8qFJmNC+MM+X5R9J0o8XyBat22\nx4QzFUwA+pZWlexqx9IV0zoufY1ZovWv+OwgofLltnbXPqPFhDT7WMfCBzwm\nhm70YVYSCrNiJ8bm4xbgglS0lMyG0E/oWLA/yT4qPS8ym0iSaGBc5+0jrBHQ\nIuev\r\n=T7QZ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIH2oIDkMfxfgoEk+CfL6w2h4RDfC1ZDYmUUIiC6BgB2IAiEA/j5xNjQBQvxKC+T1hqsGTF8Kw+Latn3ZkNgz333++uQ="}]},"_npmUser":{"name":"bevryme","email":"us@bevry.me"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/pluginloader_4.6.0-next.1592632909.510c6ee729f4e24f7e4b3719d48f18a0c4929522_1592632911170_0.24853928543426052"},"_hasShrinkwrap":false},"4.6.0":{"name":"@bevry/pluginloader","version":"4.6.0","description":"A class for loading, verifying, and creating plugins. Used by DocPad for years.","homepage":"https://github.com/bevry/pluginloader","license":"MIT","keywords":["bevry","docpad","export-default","loader","node","plugin","plugins","typed","types","typescript"],"badges":{"list":["travisci","npmversion","npmdownloads","daviddm","daviddmdev","---","githubsponsors","patreon","flattr","liberapay","buymeacoffee","opencollective","crypto","paypal","wishlist"],"config":{"githubSponsorsUsername":"balupton","buymeacoffeeUsername":"balupton","cryptoURL":"https://bevry.me/crypto","flattrUsername":"balupton","liberapayUsername":"bevry","opencollectiveUsername":"bevry","patreonUsername":"bevry","paypalURL":"https://bevry.me/paypal","wishlistURL":"https://bevry.me/wishlist","travisTLD":"com","githubUsername":"bevry","githubRepository":"pluginloader","githubSlug":"bevry/pluginloader","npmPackageName":"@bevry/pluginloader"}},"funding":"https://bevry.me/fund","author":{"name":"2018+ Benjamin Lupton","email":"b@lupton.cc","url":"https://balupton.com"},"maintainers":[{"email":"b@lupton.cc","name":"balupton"},{"email":"us@bevry.me","name":"bevryme"},{"email":"sumitrai96@gmail.com","name":"sumitrai"}],"contributors":[{"name":"Benjamin Lupton","email":"b@lupton.cc","url":"https://github.com/balupton"}],"bugs":{"url":"https://github.com/bevry/pluginloader/issues"},"repository":{"type":"git","url":"git+https://github.com/bevry/pluginloader.git"},"engines":{"node":">=10"},"editions":[{"description":"TypeScript source code with Import for modules","directory":"source","entry":"index.ts","tags":["typescript","import"],"engines":false},{"description":"TypeScript compiled against ESNext for Node.js with Require for modules","directory":"edition-esnext","entry":"index.js","tags":["javascript","esnext","require"],"engines":{"node":"10 || 12 || 13 || 14"}}],"types":"./compiled-types/","type":"commonjs","main":"edition-esnext/index.js","dependencies":{"errlop":"^3.7.0","semver":"^7.3.2","typechecker":"^7.6.0","@bevry/update-contributors":"^1.10.0","@typescript-eslint/eslint-plugin":"^3.3.0","@typescript-eslint/parser":"^3.3.0","assert-helpers":"^6.10.0","eslint":"^7.3.0","eslint-config-bevry":"^3.10.0","eslint-config-prettier":"^6.11.0","eslint-plugin-prettier":"^3.1.4","kava":"^5.6.0","make-deno-edition":"^0.9.0","prettier":"^2.0.5","projectz":"^2.7.0","surge":"^0.21.3","typedoc":"^0.17.7","typescript":"^3.9.5","valid-directory":"^2.4.0"},"devDependencies":{"@bevry/update-contributors":"^1.10.0","@typescript-eslint/eslint-plugin":"^3.3.0","@typescript-eslint/parser":"^3.3.0","assert-helpers":"^6.10.0","eslint":"^7.3.0","eslint-config-bevry":"^3.10.0","eslint-config-prettier":"^6.11.0","eslint-plugin-prettier":"^3.1.4","kava":"^5.6.0","make-deno-edition":"^0.9.0","prettier":"^2.0.5","projectz":"^2.7.0","surge":"^0.21.3","typedoc":"^0.17.7","typescript":"^3.9.5","valid-directory":"^2.4.0"},"scripts":{"our:clean":"rm -Rf ./docs ./edition* ./es2015 ./es5 ./out ./.next","our:compile":"npm run our:compile:deno && npm run our:compile:edition-esnext && npm run our:compile:types","our:compile:deno":"make-deno-edition --attempt","our:compile:edition-esnext":"tsc --module commonjs --target ESNext --outDir ./edition-esnext --project tsconfig.json && ( test ! -d edition-esnext/source || ( mv edition-esnext/source edition-temp && rm -Rf edition-esnext && mv edition-temp edition-esnext ) )","our:compile:types":"tsc --project tsconfig.json --emitDeclarationOnly --declaration --declarationMap --declarationDir ./compiled-types && ( test ! -d compiled-types/source || ( mv compiled-types/source edition-temp && rm -Rf compiled-types && mv edition-temp compiled-types ) )","our:deploy":"echo no need for this project","our:meta":"npm run our:meta:contributors && npm run our:meta:docs && npm run our:meta:projectz","our:meta:contributors":"update-contributors","our:meta:docs":"npm run our:meta:docs:typedoc","our:meta:docs:typedoc":"rm -Rf ./docs && typedoc --mode file --exclude '**/+(*test*|node_modules)' --excludeExternals --name \"$npm_package_name\" --readme ./README.md --out ./docs ./source","our:meta:projectz":"projectz compile","our:release":"npm run our:release:prepare && npm run our:release:check-changelog && npm run our:release:check-dirty && npm run our:release:tag && npm run our:release:push","our:release:check-changelog":"cat ./HISTORY.md | grep v$npm_package_version || (echo add a changelog entry for v$npm_package_version && exit -1)","our:release:check-dirty":"git diff --exit-code","our:release:prepare":"npm run our:clean && npm run our:compile && npm run our:test && npm run our:meta","our:release:push":"git push origin master && git push origin --tags","our:release:tag":"export MESSAGE=$(cat ./HISTORY.md | sed -n \"/## v$npm_package_version/,/##/p\" | sed 's/## //' | awk 'NR>1{print buf}{buf = $0}') && test \"$MESSAGE\" || (echo 'proper changelog entry not found' && exit -1) && git tag v$npm_package_version -am \"$MESSAGE\"","our:setup":"npm run our:setup:install","our:setup:install":"npm install","our:test":"npm run our:verify && npm test","our:verify":"npm run our:verify:directory && npm run our:verify:eslint && npm run our:verify:prettier","our:verify:directory":"valid-directory","our:verify:eslint":"eslint --fix --ignore-pattern '**/*.d.ts' --ignore-pattern '**/vendor/' --ignore-pattern '**/node_modules/' --ext .mjs,.js,.jsx,.ts,.tsx ./source","our:verify:prettier":"prettier --write .","test":"node ./edition-esnext/test.js"},"eslintConfig":{"extends":["bevry"]},"prettier":{"semi":false,"singleQuote":true},"gitHead":"510c6ee729f4e24f7e4b3719d48f18a0c4929522","_id":"@bevry/pluginloader@4.6.0","_nodeVersion":"14.4.0","_npmVersion":"6.14.5","dist":{"integrity":"sha512-sdUEYjtlT5xxlN6eZtO+odxD5fSuaiQFSQTFFIiruX5SCGIdODXjI6sVLAXA6VR1tqyds0qoro66QuL61oUc3A==","shasum":"91f8cb0fce6716ce2d1ae9b18a56def0108ae7a8","tarball":"https://registry.npmjs.org/@bevry/pluginloader/-/pluginloader-4.6.0.tgz","fileCount":9,"unpackedSize":45941,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe7aaWCRA9TVsSAnZWagAAJ8cP/2Nx1m34jhHdY3LrWhwh\nRebX2GjB5FVAQioErATLaCM0+R57xUliTPYTydUPI1C1gxi5HKLuGdEjQ4MB\nYFp7FByMVbl1Q0A4snyOIazx9uSexrAtPz8N2VM4z8euXz6GFpYmkSgYRCDs\nH2DF2hbA1maY9dhSu+wTuDD5uYS6UWFf0+muaCVFwqRtzTcQXWmK+o1mUZhS\nF6FYmVCjQCsFPOyBtMnjg885aIcUZEQmdCeT1KAA4TYS9txCVILp9m2R8PYF\nIJ9Un3xZIH3ctz3x9mkXAj//3hQQ8C2CryARAMcmHNsTOhWZhy2Dy43LApJA\n4iEKIbvsZzrmM6CsoOweUqf9CJlMCNq7uls5R+L6Tsrtko0AREAinBt90lrg\nzx/LFibYNnmYVHD/DDNltr1i4thk11qAj5DzZsCw5pBDYgaUjz/dQZEuf/Oy\nbvXV/kh7FcGZ5WsaQFYRyO6ZaXVZCS3AX8cmrePigc+vMvVAEHSvy5hhRpUY\nCzOwp43Bk5F7xSyqjOhHGGZSyBbOfpjLLqgY242zsflXEcDCELHrevcfKyjM\nt7gQfVYq9qrQp+OriO5Ed8g2Sr6MGCHOA27PXqMLuM0llZFyAj8yPY6y6PTm\nECGtDUnT2qbu7ekJ4klcakcHQnCVX4ifLShNICMMMKevl/xJX8Z5wizOURL9\nCFiq\r\n=PI9U\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHzYSdWszGs1asCvLTKn+MUh31GONEM1WXegwS3YCHDYAiAygUUbXbUpoKXLUjUmeOTNoF5K/G14MHBcaoME2PZRDA=="}]},"_npmUser":{"name":"bevryme","email":"us@bevry.me"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/pluginloader_4.6.0_1592632982348_0.3297006013447472"},"_hasShrinkwrap":false},"4.7.0-next.1592720958.8f56482d67dd32861117dde0cbdbe3ea0a2929f5":{"name":"@bevry/pluginloader","version":"4.7.0-next.1592720958.8f56482d67dd32861117dde0cbdbe3ea0a2929f5","description":"A class for loading, verifying, and creating plugins. Used by DocPad for years.","homepage":"https://github.com/bevry/pluginloader","license":"MIT","keywords":["bevry","docpad","export-default","loader","node","plugin","plugins","typed","types","typescript"],"badges":{"list":["travisci","npmversion","npmdownloads","daviddm","daviddmdev","---","githubsponsors","patreon","flattr","liberapay","buymeacoffee","opencollective","crypto","paypal","wishlist"],"config":{"githubSponsorsUsername":"balupton","buymeacoffeeUsername":"balupton","cryptoURL":"https://bevry.me/crypto","flattrUsername":"balupton","liberapayUsername":"bevry","opencollectiveUsername":"bevry","patreonUsername":"bevry","paypalURL":"https://bevry.me/paypal","wishlistURL":"https://bevry.me/wishlist","travisTLD":"com","githubUsername":"bevry","githubRepository":"pluginloader","githubSlug":"bevry/pluginloader","npmPackageName":"@bevry/pluginloader"}},"funding":"https://bevry.me/fund","author":{"name":"2018+ Benjamin Lupton","email":"b@lupton.cc","url":"https://balupton.com"},"maintainers":[{"email":"b@lupton.cc","name":"balupton"},{"email":"us@bevry.me","name":"bevryme"},{"email":"sumitrai96@gmail.com","name":"sumitrai"}],"contributors":[{"name":"Benjamin Lupton","email":"b@lupton.cc","url":"https://github.com/balupton"}],"bugs":{"url":"https://github.com/bevry/pluginloader/issues"},"repository":{"type":"git","url":"git+https://github.com/bevry/pluginloader.git"},"engines":{"node":">=10"},"editions":[{"description":"TypeScript source code with Import for modules","directory":"source","entry":"index.ts","tags":["typescript","import"],"engines":false},{"description":"TypeScript compiled against ESNext for Node.js with Require for modules","directory":"edition-esnext","entry":"index.js","tags":["javascript","esnext","require"],"engines":{"node":"10 || 12 || 13 || 14"}}],"types":"./compiled-types/","type":"commonjs","main":"edition-esnext/index.js","dependencies":{"editions":"3.5.0","errlop":"3.5.0","semver":"^7.3.2","typechecker":"7.5.0"},"devDependencies":{"@bevry/update-contributors":"1.9.0","@typescript-eslint/eslint-plugin":"^3.3.0","@typescript-eslint/parser":"^3.3.0","assert-helpers":"6.8.0","eslint":"^7.3.0","eslint-config-bevry":"3.8.0","eslint-config-prettier":"^6.7.0","eslint-plugin-prettier":"^3.1.4","kava":"5.4.0","make-deno-edition":"0.9.1","prettier":"^2.0.5","projectz":"2.5.0","surge":"^0.21.3","typedoc":"^0.17.7","typescript":"^3.9.5","valid-directory":"2.2.0"},"scripts":{"our:clean":"rm -Rf ./docs ./edition* ./es2015 ./es5 ./out ./.next","our:compile":"yarn run our:compile:deno && yarn run our:compile:edition-esnext && yarn run our:compile:types","our:compile:deno":"make-deno-edition --attempt","our:compile:edition-esnext":"tsc --module commonjs --target ESNext --outDir ./edition-esnext --project tsconfig.json && ( test ! -d edition-esnext/source || ( mv edition-esnext/source edition-temp && rm -Rf edition-esnext && mv edition-temp edition-esnext ) )","our:compile:types":"tsc --project tsconfig.json --emitDeclarationOnly --declaration --declarationMap --declarationDir ./compiled-types && ( test ! -d compiled-types/source || ( mv compiled-types/source edition-temp && rm -Rf compiled-types && mv edition-temp compiled-types ) )","our:deploy":"echo no need for this project","our:meta":"yarn run our:meta:contributors && yarn run our:meta:docs && yarn run our:meta:projectz","our:meta:contributors":"update-contributors","our:meta:docs":"yarn run our:meta:docs:typedoc","our:meta:docs:typedoc":"rm -Rf ./docs && typedoc --mode file --exclude '**/+(*test*|node_modules)' --excludeExternals --name \"$npm_package_name\" --readme ./README.md --out ./docs ./source","our:meta:projectz":"projectz compile","our:release":"yarn run our:release:prepare && yarn run our:release:check-changelog && yarn run our:release:check-dirty && yarn run our:release:tag && yarn run our:release:push","our:release:check-changelog":"cat ./HISTORY.md | grep v$npm_package_version || (echo add a changelog entry for v$npm_package_version && exit -1)","our:release:check-dirty":"git diff --exit-code","our:release:prepare":"yarn run our:clean && yarn run our:compile && yarn run our:test && yarn run our:meta","our:release:push":"git push origin master && git push origin --tags","our:release:tag":"export MESSAGE=$(cat ./HISTORY.md | sed -n \"/## v$npm_package_version/,/##/p\" | sed 's/## //' | awk 'NR>1{print buf}{buf = $0}') && test \"$MESSAGE\" || (echo 'proper changelog entry not found' && exit -1) && git tag v$npm_package_version -am \"$MESSAGE\"","our:setup":"yarn run our:setup:install","our:setup:install":"/usr/local/bin/yarn install --ignore-engines","our:test":"yarn run our:verify && yarn test","our:verify":"yarn run our:verify:directory && yarn run our:verify:eslint && yarn run our:verify:prettier","our:verify:directory":"valid-directory","our:verify:eslint":"eslint --fix --ignore-pattern '**/*.d.ts' --ignore-pattern '**/vendor/' --ignore-pattern '**/node_modules/' --ext .mjs,.js,.jsx,.ts,.tsx ./source","our:verify:prettier":"prettier --write .","test":"node ./edition-esnext/test.js"},"eslintConfig":{"extends":["bevry"]},"prettier":{"semi":false,"singleQuote":true},"gitHead":"8f56482d67dd32861117dde0cbdbe3ea0a2929f5","readme":"<!-- TITLE/ -->\n\n<h1>@bevry/pluginloader</h1>\n\n<!-- /TITLE -->\n\n\n<!-- BADGES/ -->\n\n<span class=\"badge-travisci\"><a href=\"http://travis-ci.com/bevry/pluginloader\" title=\"Check this project's build status on TravisCI\"><img src=\"https://img.shields.io/travis/com/bevry/pluginloader/master.svg\" alt=\"Travis CI Build Status\" /></a></span>\n<span class=\"badge-npmversion\"><a href=\"https://npmjs.org/package/@bevry/pluginloader\" title=\"View this project on NPM\"><img src=\"https://img.shields.io/npm/v/@bevry/pluginloader.svg\" alt=\"NPM version\" /></a></span>\n<span class=\"badge-npmdownloads\"><a href=\"https://npmjs.org/package/@bevry/pluginloader\" title=\"View this project on NPM\"><img src=\"https://img.shields.io/npm/dm/@bevry/pluginloader.svg\" alt=\"NPM downloads\" /></a></span>\n<span class=\"badge-daviddm\"><a href=\"https://david-dm.org/bevry/pluginloader\" title=\"View the status of this project's dependencies on DavidDM\"><img src=\"https://img.shields.io/david/bevry/pluginloader.svg\" alt=\"Dependency Status\" /></a></span>\n<span class=\"badge-daviddmdev\"><a href=\"https://david-dm.org/bevry/pluginloader#info=devDependencies\" title=\"View the status of this project's development dependencies on DavidDM\"><img src=\"https://img.shields.io/david/dev/bevry/pluginloader.svg\" alt=\"Dev Dependency Status\" /></a></span>\n<br class=\"badge-separator\" />\n<span class=\"badge-githubsponsors\"><a href=\"https://github.com/sponsors/balupton\" title=\"Donate to this project using GitHub Sponsors\"><img src=\"https://img.shields.io/badge/github-donate-yellow.svg\" alt=\"GitHub Sponsors donate button\" /></a></span>\n<span class=\"badge-patreon\"><a href=\"https://patreon.com/bevry\" title=\"Donate to this project using Patreon\"><img src=\"https://img.shields.io/badge/patreon-donate-yellow.svg\" alt=\"Patreon donate button\" /></a></span>\n<span class=\"badge-flattr\"><a href=\"https://flattr.com/profile/balupton\" title=\"Donate to this project using Flattr\"><img src=\"https://img.shields.io/badge/flattr-donate-yellow.svg\" alt=\"Flattr donate button\" /></a></span>\n<span class=\"badge-liberapay\"><a href=\"https://liberapay.com/bevry\" title=\"Donate to this project using Liberapay\"><img src=\"https://img.shields.io/badge/liberapay-donate-yellow.svg\" alt=\"Liberapay donate button\" /></a></span>\n<span class=\"badge-buymeacoffee\"><a href=\"https://buymeacoffee.com/balupton\" title=\"Donate to this project using Buy Me A Coffee\"><img src=\"https://img.shields.io/badge/buy%20me%20a%20coffee-donate-yellow.svg\" alt=\"Buy Me A Coffee donate button\" /></a></span>\n<span class=\"badge-opencollective\"><a href=\"https://opencollective.com/bevry\" title=\"Donate to this project using Open Collective\"><img src=\"https://img.shields.io/badge/open%20collective-donate-yellow.svg\" alt=\"Open Collective donate button\" /></a></span>\n<span class=\"badge-crypto\"><a href=\"https://bevry.me/crypto\" title=\"Donate to this project using Cryptocurrency\"><img src=\"https://img.shields.io/badge/crypto-donate-yellow.svg\" alt=\"crypto donate button\" /></a></span>\n<span class=\"badge-paypal\"><a href=\"https://bevry.me/paypal\" title=\"Donate to this project using Paypal\"><img src=\"https://img.shields.io/badge/paypal-donate-yellow.svg\" alt=\"PayPal donate button\" /></a></span>\n<span class=\"badge-wishlist\"><a href=\"https://bevry.me/wishlist\" title=\"Buy an item on our wishlist for us\"><img src=\"https://img.shields.io/badge/wishlist-donate-yellow.svg\" alt=\"Wishlist browse button\" /></a></span>\n\n<!-- /BADGES -->\n\n\n<!-- DESCRIPTION/ -->\n\nA class for loading, verifying, and creating plugins. Used by DocPad for years.\n\n<!-- /DESCRIPTION -->\n\n\n## Usage\n\n[Complete API Documentation.](http://master.pluginloader.bevry.surge.sh/docs/globals.html)\n\n### Basics\n\nCreate your project:\n\n1. `mkdir my-project`\n1. `cd my-project`\n\nCreate your plugin:\n\n1. `mkdir myplugin`\n1. `cd myplugin`\n1. `npm init`\n1. `index.js` to:\n\n    ```javascript\n    module.exports = function (BasePlugin) {\n        return class MyPlugin extends BasePlugin {\n            constructor(...args) {\n                super(...args)\n                console.log('hello from my plugin')\n            }\n        }\n    }\n    ```\n\n1. `cd ..`\n\nCreate your plugin loader:\n\n1. `mkdir myapp`\n1. `cd myapp`\n1. `npm init`\n1. `index.js` to:\n\n    ```javascript\n    import PluginLoader from '@bevry/pluginloader'\n\n    class BasePlugin {\n        constructor() {\n            console.log('hello from base plugin')\n        }\n    }\n\n    const pluginLoader = new PluginLoader({\n        BasePlugin,\n        pluginPath: require('path').resolve(__dirname, '..', 'myplugin'),\n    })\n    ```\n\n1. `cd ..`\n\nRun the project:\n\n1. `node myapp/index.js`\n\n### Ecosystem\n\n-   [pluginclerk](https://github.com/bevry/pluginclerk) a project for fetching compatible plugins from the npm registry\n-   [docpad-baseplugin](https://github.com/docpad/docpad-baseplugin) the BasePlugin class that DocPad uses\n-   [docpad-plugintester](https://github.com/docpad/docpad-plugintester) testing helpers for DocPad plugins\n\n<!-- INSTALL/ -->\n\n<h2>Install</h2>\n\n<a href=\"https://npmjs.com\" title=\"npm is a package manager for javascript\"><h3>npm</h3></a>\n<ul>\n<li>Install: <code>npm install --save @bevry/pluginloader</code></li>\n<li>Import: <code>import pkg from ('@bevry/pluginloader')</code></li>\n<li>Require: <code>const pkg = require('@bevry/pluginloader').default</code></li>\n</ul>\n\n<h3><a href=\"https://editions.bevry.me\" title=\"Editions are the best way to produce and consume packages you care about.\">Editions</a></h3>\n\n<p>This package is published with the following editions:</p>\n\n<ul><li><code>@bevry/pluginloader/source/index.ts</code> is <a href=\"https://www.typescriptlang.org/\" title=\"TypeScript is a typed superset of JavaScript that compiles to plain JavaScript. \">TypeScript</a> source code with <a href=\"https://babeljs.io/docs/learn-es2015/#modules\" title=\"ECMAScript Modules\">Import</a> for modules</li>\n<li><code>@bevry/pluginloader</code> aliases <code>@bevry/pluginloader/edition-esnext/index.js</code></li>\n<li><code>@bevry/pluginloader/edition-esnext/index.js</code> is <a href=\"https://www.typescriptlang.org/\" title=\"TypeScript is a typed superset of JavaScript that compiles to plain JavaScript. \">TypeScript</a> compiled against <a href=\"https://en.wikipedia.org/wiki/ECMAScript#ES.Next\" title=\"ECMAScript Next\">ESNext</a> for <a href=\"https://nodejs.org\" title=\"Node.js is a JavaScript runtime built on Chrome's V8 JavaScript engine\">Node.js</a> with <a href=\"https://nodejs.org/dist/latest-v5.x/docs/api/modules.html\" title=\"Node/CJS Modules\">Require</a> for modules</li></ul>\n\n<!-- /INSTALL -->\n\n\n<!-- HISTORY/ -->\n\n<h2>History</h2>\n\n<a href=\"https://github.com/bevry/pluginloader/blob/master/HISTORY.md#files\">Discover the release history by heading on over to the <code>HISTORY.md</code> file.</a>\n\n<!-- /HISTORY -->\n\n\n<!-- CONTRIBUTE/ -->\n\n<h2>Contribute</h2>\n\n<a href=\"https://github.com/bevry/pluginloader/blob/master/CONTRIBUTING.md#files\">Discover how you can contribute by heading on over to the <code>CONTRIBUTING.md</code> file.</a>\n\n<!-- /CONTRIBUTE -->\n\n\n<!-- BACKERS/ -->\n\n<h2>Backers</h2>\n\n<h3>Maintainers</h3>\n\nThese amazing people are maintaining this project:\n\n<ul><li><a href=\"https://balupton.com\">Benjamin Lupton</a> — <a href=\"https://github.com/bevry/pluginloader/commits?author=balupton\" title=\"View the GitHub contributions of Benjamin Lupton on repository bevry/pluginloader\">view contributions</a></li></ul>\n\n<h3>Sponsors</h3>\n\nNo sponsors yet! Will you be the first?\n\n<span class=\"badge-githubsponsors\"><a href=\"https://github.com/sponsors/balupton\" title=\"Donate to this project using GitHub Sponsors\"><img src=\"https://img.shields.io/badge/github-donate-yellow.svg\" alt=\"GitHub Sponsors donate button\" /></a></span>\n<span class=\"badge-patreon\"><a href=\"https://patreon.com/bevry\" title=\"Donate to this project using Patreon\"><img src=\"https://img.shields.io/badge/patreon-donate-yellow.svg\" alt=\"Patreon donate button\" /></a></span>\n<span class=\"badge-flattr\"><a href=\"https://flattr.com/profile/balupton\" title=\"Donate to this project using Flattr\"><img src=\"https://img.shields.io/badge/flattr-donate-yellow.svg\" alt=\"Flattr donate button\" /></a></span>\n<span class=\"badge-liberapay\"><a href=\"https://liberapay.com/bevry\" title=\"Donate to this project using Liberapay\"><img src=\"https://img.shields.io/badge/liberapay-donate-yellow.svg\" alt=\"Liberapay donate button\" /></a></span>\n<span class=\"badge-buymeacoffee\"><a href=\"https://buymeacoffee.com/balupton\" title=\"Donate to this project using Buy Me A Coffee\"><img src=\"https://img.shields.io/badge/buy%20me%20a%20coffee-donate-yellow.svg\" alt=\"Buy Me A Coffee donate button\" /></a></span>\n<span class=\"badge-opencollective\"><a href=\"https://opencollective.com/bevry\" title=\"Donate to this project using Open Collective\"><img src=\"https://img.shields.io/badge/open%20collective-donate-yellow.svg\" alt=\"Open Collective donate button\" /></a></span>\n<span class=\"badge-crypto\"><a href=\"https://bevry.me/crypto\" title=\"Donate to this project using Cryptocurrency\"><img src=\"https://img.shields.io/badge/crypto-donate-yellow.svg\" alt=\"crypto donate button\" /></a></span>\n<span class=\"badge-paypal\"><a href=\"https://bevry.me/paypal\" title=\"Donate to this project using Paypal\"><img src=\"https://img.shields.io/badge/paypal-donate-yellow.svg\" alt=\"PayPal donate button\" /></a></span>\n<span class=\"badge-wishlist\"><a href=\"https://bevry.me/wishlist\" title=\"Buy an item on our wishlist for us\"><img src=\"https://img.shields.io/badge/wishlist-donate-yellow.svg\" alt=\"Wishlist browse button\" /></a></span>\n\n<h3>Contributors</h3>\n\nThese amazing people have contributed code to this project:\n\n<ul><li><a href=\"https://balupton.com\">Benjamin Lupton</a> — <a href=\"https://github.com/bevry/pluginloader/commits?author=balupton\" title=\"View the GitHub contributions of Benjamin Lupton on repository bevry/pluginloader\">view contributions</a></li></ul>\n\n<a href=\"https://github.com/bevry/pluginloader/blob/master/CONTRIBUTING.md#files\">Discover how you can contribute by heading on over to the <code>CONTRIBUTING.md</code> file.</a>\n\n<!-- /BACKERS -->\n\n\n<!-- LICENSE/ -->\n\n<h2>License</h2>\n\nUnless stated otherwise all works are:\n\n<ul><li>Copyright &copy; 2018+ <a href=\"https://balupton.com\">Benjamin Lupton</a></li></ul>\n\nand licensed under:\n\n<ul><li><a href=\"http://spdx.org/licenses/MIT.html\">MIT License</a></li></ul>\n\n<!-- /LICENSE -->\n","readmeFilename":"README.md","_id":"@bevry/pluginloader@4.7.0-next.1592720958.8f56482d67dd32861117dde0cbdbe3ea0a2929f5","_nodeVersion":"14.4.0","_npmVersion":"6.14.5","dist":{"integrity":"sha512-LuaJvqVsU/n9NbuaA74/eIFmkXlawi7DVccc1b/vU00M2rlUMzbsAgNHFus4uQ0laq2+E+gviKvcQafzIyBAGA==","shasum":"636f71558ecad2192916a0ecc8d52a73cdcb2acd","tarball":"https://registry.npmjs.org/@bevry/pluginloader/-/pluginloader-4.7.0-next.1592720958.8f56482d67dd32861117dde0cbdbe3ea0a2929f5.tgz","fileCount":9,"unpackedSize":45725,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe7v5ACRA9TVsSAnZWagAAxvwQAJCTpa0+k5Ar6vzsaTNb\n369gpDJ5pjqln3jHkcgpZfV9wjqQARp+2B72aA8x4ml7yG7pqtrsMNYAWWpX\n+4mtA/nrQaVzGolViPXoOi/J5lNRBh1gz1YHQjFyBYFItlgpPp1uhxRMwyVD\nDkDtp9D8IOoendg8oLRfgP8lCrW6sG2WCQJWLVlgS6PzVp3lgXAhnUgHXTxl\nieUOziIi8X/LV2d8/h49YX1vD4o50CpV9i66U3XBw9MiaFCr93Uu7wjQre0x\ngDIXPuKpUNbIr6KiefzyyCsvW8cHrbDmwtasjNVnQlXL2fdH+NYs05YYLjYy\nPLvd3XyxQ4sNXhhx0D8/xmIg/LeFH/7MFh2DBriNQAKCg3C7Ac1qB8t10Dka\nnXM+CIgrtvWZIeM8i4PzNMkvM/rC+ibSMJ0kd4yvDWPHmnNekxl/b//NM5Qo\nTf50k+Ii3FZyvYuxZ5H+YEhQDben+sEZcb7x9583pj30PUeCWiCTmuvpc8nc\ngUTXVCsXF8sOvlt2N1HFoCXswHDRguhqaJuXiekI1/Pxnl/CNcxVs5I2ZD9D\n1WMVvogJhUVDv6tsKjBBtKfuxMmf8E/aZXVSvzmOY1O3xRPK0mJoyJA57SNb\nQTnPNPbY8erAxnkKVa7bYakQHDFBtItre4Hz1xICPhQremLo1aDU5JxoY1is\nNiSD\r\n=Czbv\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEuN6eB419nR4gmpboCkYTdmGh/rG3Ud0oYqTquZ6F+sAiEAtXa93VoaQPRSTOJxMYk573EkPcTCBuT+xKuQtqBZhDo="}]},"_npmUser":{"name":"bevryme","email":"us@bevry.me"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/pluginloader_4.7.0-next.1592720958.8f56482d67dd32861117dde0cbdbe3ea0a2929f5_1592720959890_0.20325869996625223"},"_hasShrinkwrap":false},"4.7.0":{"name":"@bevry/pluginloader","version":"4.7.0","description":"A class for loading, verifying, and creating plugins. Used by DocPad for years.","homepage":"https://github.com/bevry/pluginloader","license":"MIT","keywords":["bevry","docpad","export-default","loader","node","plugin","plugins","typed","types","typescript"],"badges":{"list":["travisci","npmversion","npmdownloads","daviddm","daviddmdev","---","githubsponsors","patreon","flattr","liberapay","buymeacoffee","opencollective","crypto","paypal","wishlist"],"config":{"githubSponsorsUsername":"balupton","buymeacoffeeUsername":"balupton","cryptoURL":"https://bevry.me/crypto","flattrUsername":"balupton","liberapayUsername":"bevry","opencollectiveUsername":"bevry","patreonUsername":"bevry","paypalURL":"https://bevry.me/paypal","wishlistURL":"https://bevry.me/wishlist","travisTLD":"com","githubUsername":"bevry","githubRepository":"pluginloader","githubSlug":"bevry/pluginloader","npmPackageName":"@bevry/pluginloader"}},"funding":"https://bevry.me/fund","author":{"name":"2018+ Benjamin Lupton","email":"b@lupton.cc","url":"https://balupton.com"},"maintainers":[{"email":"b@lupton.cc","name":"balupton"},{"email":"us@bevry.me","name":"bevryme"},{"email":"sumitrai96@gmail.com","name":"sumitrai"}],"contributors":[{"name":"Benjamin Lupton","email":"b@lupton.cc","url":"https://github.com/balupton"}],"bugs":{"url":"https://github.com/bevry/pluginloader/issues"},"repository":{"type":"git","url":"git+https://github.com/bevry/pluginloader.git"},"engines":{"node":">=10"},"editions":[{"description":"TypeScript source code with Import for modules","directory":"source","entry":"index.ts","tags":["typescript","import"],"engines":false},{"description":"TypeScript compiled against ESNext for Node.js with Require for modules","directory":"edition-esnext","entry":"index.js","tags":["javascript","esnext","require"],"engines":{"node":"10 || 12 || 13 || 14"}}],"types":"./compiled-types/","type":"commonjs","main":"edition-esnext/index.js","dependencies":{"editions":"3.5.0","errlop":"3.5.0","semver":"^7.3.2","typechecker":"7.5.0"},"devDependencies":{"@bevry/update-contributors":"1.9.0","@typescript-eslint/eslint-plugin":"^3.3.0","@typescript-eslint/parser":"^3.3.0","assert-helpers":"6.8.0","eslint":"^7.3.0","eslint-config-bevry":"3.8.0","eslint-config-prettier":"^6.7.0","eslint-plugin-prettier":"^3.1.4","kava":"5.4.0","make-deno-edition":"0.9.1","prettier":"^2.0.5","projectz":"2.5.0","surge":"^0.21.3","typedoc":"^0.17.7","typescript":"^3.9.5","valid-directory":"2.2.0"},"scripts":{"our:clean":"rm -Rf ./docs ./edition* ./es2015 ./es5 ./out ./.next","our:compile":"yarn run our:compile:deno && yarn run our:compile:edition-esnext && yarn run our:compile:types","our:compile:deno":"make-deno-edition --attempt","our:compile:edition-esnext":"tsc --module commonjs --target ESNext --outDir ./edition-esnext --project tsconfig.json && ( test ! -d edition-esnext/source || ( mv edition-esnext/source edition-temp && rm -Rf edition-esnext && mv edition-temp edition-esnext ) )","our:compile:types":"tsc --project tsconfig.json --emitDeclarationOnly --declaration --declarationMap --declarationDir ./compiled-types && ( test ! -d compiled-types/source || ( mv compiled-types/source edition-temp && rm -Rf compiled-types && mv edition-temp compiled-types ) )","our:deploy":"echo no need for this project","our:meta":"yarn run our:meta:contributors && yarn run our:meta:docs && yarn run our:meta:projectz","our:meta:contributors":"update-contributors","our:meta:docs":"yarn run our:meta:docs:typedoc","our:meta:docs:typedoc":"rm -Rf ./docs && typedoc --mode file --exclude '**/+(*test*|node_modules)' --excludeExternals --name \"$npm_package_name\" --readme ./README.md --out ./docs ./source","our:meta:projectz":"projectz compile","our:release":"yarn run our:release:prepare && yarn run our:release:check-changelog && yarn run our:release:check-dirty && yarn run our:release:tag && yarn run our:release:push","our:release:check-changelog":"cat ./HISTORY.md | grep v$npm_package_version || (echo add a changelog entry for v$npm_package_version && exit -1)","our:release:check-dirty":"git diff --exit-code","our:release:prepare":"yarn run our:clean && yarn run our:compile && yarn run our:test && yarn run our:meta","our:release:push":"git push origin master && git push origin --tags","our:release:tag":"export MESSAGE=$(cat ./HISTORY.md | sed -n \"/## v$npm_package_version/,/##/p\" | sed 's/## //' | awk 'NR>1{print buf}{buf = $0}') && test \"$MESSAGE\" || (echo 'proper changelog entry not found' && exit -1) && git tag v$npm_package_version -am \"$MESSAGE\"","our:setup":"yarn run our:setup:install","our:setup:install":"/usr/local/bin/yarn install --ignore-engines","our:test":"yarn run our:verify && yarn test","our:verify":"yarn run our:verify:directory && yarn run our:verify:eslint && yarn run our:verify:prettier","our:verify:directory":"valid-directory","our:verify:eslint":"eslint --fix --ignore-pattern '**/*.d.ts' --ignore-pattern '**/vendor/' --ignore-pattern '**/node_modules/' --ext .mjs,.js,.jsx,.ts,.tsx ./source","our:verify:prettier":"prettier --write .","test":"node ./edition-esnext/test.js"},"eslintConfig":{"extends":["bevry"]},"prettier":{"semi":false,"singleQuote":true},"gitHead":"8f56482d67dd32861117dde0cbdbe3ea0a2929f5","_id":"@bevry/pluginloader@4.7.0","_nodeVersion":"14.4.0","_npmVersion":"6.14.5","dist":{"integrity":"sha512-tZWdOwwynABai/0IXiYMfas4/P0LtphMSVvbHeqipBCaqwISpjhKiQL3tx7fNNgYKOkQdY+FN7+xCiJjDTL++w==","shasum":"5e1ccff8e6e29559f580c03a25728d6e1f5d8c3e","tarball":"https://registry.npmjs.org/@bevry/pluginloader/-/pluginloader-4.7.0.tgz","fileCount":9,"unpackedSize":45668,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe7v6KCRA9TVsSAnZWagAAIloP/3wUoPLZGI5W6lozbtl5\n3s+n4Odc4ri9OXOWefIoPUNUMVHeUKSyxBLohosNSTlMQ3gNjfioX2z/5wod\nPAp5fcwm88J+NTm0aULggroDlzibHU+ZoUuzZ10ZmYe+D4cTh25ooHE1cp5e\ngUHAzmTwznoJ1b5eQFGIny9GCGlFYD6VqBlOTWfoBz4arC0e9c3SthbvyAzJ\ndD19PwuNUy7f8vSFlclGHBfBKnNftz2RMs4vtxdzJiYgu5V2Gf1fAqZAHmCz\nacIQUywqNhKU18K0IRe2HJfWw7+3iI7Ue2BtLjMZ4luSTixLX+IVG+zIfsYt\n+iDvhyyfZtRwpAZm6i9PZoM4Qzw0bo7dnxCOUm5+GokRSPVxwVp8xGiN6fl7\nD1KJZoHMf+kIanKrfYGLuHmbzrQKfIS42eMZwW0tgIwnsliPzT6aqIWIGE0r\nD10hJeqXr0dOGjlNhOKJMTUXGiY10SOOMtUVYsbXC2TgmsqMXllqhhAKJ+8f\nKRZXFHFlMZwoy8+OCC/hIoEu0ML+seGQSGu9Vh7//J1o0aplQa63dTwrnhbc\n0tfrQ7QrcDlnRYHKbkutygLnIOxAz0eajj8sul15yFtM3SVVfnxnNYJIA77r\nR7cT0fO8u5AwteJzZ7S6vDkwxqrvWXPo+fyDLgwTjb98f1s+PT+9BDM8owfk\nTnNL\r\n=EucM\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGaBRHvWdvhE1vdCPbAX/AjAXHo4YjCPL3ICZZeZ2a7YAiAdJiPxKHZPYe8CLfdWyPFGcNT39BAQRYOFq1db8Q+VJQ=="}]},"_npmUser":{"name":"bevryme","email":"us@bevry.me"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/pluginloader_4.7.0_1592721034363_0.19465526841535175"},"_hasShrinkwrap":false},"4.8.0-next.1592762938.a2e3adf8847e4c15f0ef5349e5bd6d2da4a647d7":{"name":"@bevry/pluginloader","version":"4.8.0-next.1592762938.a2e3adf8847e4c15f0ef5349e5bd6d2da4a647d7","description":"A class for loading, verifying, and creating plugins. Used by DocPad for years.","homepage":"https://github.com/bevry/pluginloader","license":"MIT","keywords":["bevry","docpad","export-default","loader","node","plugin","plugins","typed","types","typescript"],"badges":{"list":["travisci","npmversion","npmdownloads","daviddm","daviddmdev","---","githubsponsors","patreon","flattr","liberapay","buymeacoffee","opencollective","crypto","paypal","wishlist"],"config":{"githubSponsorsUsername":"balupton","buymeacoffeeUsername":"balupton","cryptoURL":"https://bevry.me/crypto","flattrUsername":"balupton","liberapayUsername":"bevry","opencollectiveUsername":"bevry","patreonUsername":"bevry","paypalURL":"https://bevry.me/paypal","wishlistURL":"https://bevry.me/wishlist","travisTLD":"com","githubUsername":"bevry","githubRepository":"pluginloader","githubSlug":"bevry/pluginloader","npmPackageName":"@bevry/pluginloader"}},"funding":"https://bevry.me/fund","author":{"name":"2018+ Benjamin Lupton","email":"b@lupton.cc","url":"https://balupton.com"},"maintainers":[{"email":"b@lupton.cc","name":"balupton"},{"email":"us@bevry.me","name":"bevryme"},{"email":"sumitrai96@gmail.com","name":"sumitrai"}],"contributors":[{"name":"Benjamin Lupton","email":"b@lupton.cc","url":"https://github.com/balupton"}],"bugs":{"url":"https://github.com/bevry/pluginloader/issues"},"repository":{"type":"git","url":"git+https://github.com/bevry/pluginloader.git"},"engines":{"node":">=10"},"editions":[{"description":"TypeScript source code with Import for modules","directory":"source","entry":"index.ts","tags":["typescript","import"],"engines":false},{"description":"TypeScript compiled against ESNext for Node.js with Require for modules","directory":"edition-esnext","entry":"index.js","tags":["javascript","esnext","require"],"engines":{"node":"10 || 12 || 13 || 14"}}],"types":"./compiled-types/","type":"commonjs","main":"edition-esnext/index.js","dependencies":{"errlop":"3.5.0","semver":"^7.3.2","typechecker":"7.5.0"},"devDependencies":{"@bevry/update-contributors":"^1.9.0","@typescript-eslint/eslint-plugin":"^3.3.0","@typescript-eslint/parser":"^3.3.0","assert-helpers":"^6.8.0","eslint":"^7.3.0","eslint-config-bevry":"^3.8.0","eslint-config-prettier":"^6.7.0","eslint-plugin-prettier":"^3.1.4","kava":"^5.7.0","make-deno-edition":"^0.9.1","prettier":"^2.0.5","projectz":"^2.9.0","surge":"^0.21.3","typedoc":"^0.17.7","typescript":"^3.9.5","valid-directory":"^2.5.0"},"scripts":{"our:clean":"rm -Rf ./docs ./edition* ./es2015 ./es5 ./out ./.next","our:compile":"yarn run our:compile:deno && yarn run our:compile:edition-esnext && yarn run our:compile:types","our:compile:deno":"make-deno-edition --attempt","our:compile:edition-esnext":"tsc --module commonjs --target ESNext --outDir ./edition-esnext --project tsconfig.json && ( test ! -d edition-esnext/source || ( mv edition-esnext/source edition-temp && rm -Rf edition-esnext && mv edition-temp edition-esnext ) )","our:compile:types":"tsc --project tsconfig.json --emitDeclarationOnly --declaration --declarationMap --declarationDir ./compiled-types && ( test ! -d compiled-types/source || ( mv compiled-types/source edition-temp && rm -Rf compiled-types && mv edition-temp compiled-types ) )","our:deploy":"echo no need for this project","our:meta":"yarn run our:meta:contributors && yarn run our:meta:docs && yarn run our:meta:projectz","our:meta:contributors":"update-contributors","our:meta:docs":"yarn run our:meta:docs:typedoc","our:meta:docs:typedoc":"rm -Rf ./docs && typedoc --mode file --exclude '**/+(*test*|node_modules)' --excludeExternals --name \"$npm_package_name\" --readme ./README.md --out ./docs ./source","our:meta:projectz":"projectz compile","our:release":"yarn run our:release:prepare && yarn run our:release:check-changelog && yarn run our:release:check-dirty && yarn run our:release:tag && yarn run our:release:push","our:release:check-changelog":"cat ./HISTORY.md | grep v$npm_package_version || (echo add a changelog entry for v$npm_package_version && exit -1)","our:release:check-dirty":"git diff --exit-code","our:release:prepare":"yarn run our:clean && yarn run our:compile && yarn run our:test && yarn run our:meta","our:release:push":"git push origin master && git push origin --tags","our:release:tag":"export MESSAGE=$(cat ./HISTORY.md | sed -n \"/## v$npm_package_version/,/##/p\" | sed 's/## //' | awk 'NR>1{print buf}{buf = $0}') && test \"$MESSAGE\" || (echo 'proper changelog entry not found' && exit -1) && git tag v$npm_package_version -am \"$MESSAGE\"","our:setup":"yarn run our:setup:install","our:setup:install":"/usr/local/bin/yarn install --ignore-engines","our:test":"yarn run our:verify && yarn test","our:verify":"yarn run our:verify:directory && yarn run our:verify:eslint && yarn run our:verify:prettier","our:verify:directory":"valid-directory","our:verify:eslint":"eslint --fix --ignore-pattern '**/*.d.ts' --ignore-pattern '**/vendor/' --ignore-pattern '**/node_modules/' --ext .mjs,.js,.jsx,.ts,.tsx ./source","our:verify:prettier":"prettier --write .","test":"node ./edition-esnext/test.js"},"eslintConfig":{"extends":["bevry"]},"prettier":{"semi":false,"singleQuote":true},"gitHead":"a2e3adf8847e4c15f0ef5349e5bd6d2da4a647d7","readme":"<!-- TITLE/ -->\n\n<h1>@bevry/pluginloader</h1>\n\n<!-- /TITLE -->\n\n\n<!-- BADGES/ -->\n\n<span class=\"badge-travisci\"><a href=\"http://travis-ci.com/bevry/pluginloader\" title=\"Check this project's build status on TravisCI\"><img src=\"https://img.shields.io/travis/com/bevry/pluginloader/master.svg\" alt=\"Travis CI Build Status\" /></a></span>\n<span class=\"badge-npmversion\"><a href=\"https://npmjs.org/package/@bevry/pluginloader\" title=\"View this project on NPM\"><img src=\"https://img.shields.io/npm/v/@bevry/pluginloader.svg\" alt=\"NPM version\" /></a></span>\n<span class=\"badge-npmdownloads\"><a href=\"https://npmjs.org/package/@bevry/pluginloader\" title=\"View this project on NPM\"><img src=\"https://img.shields.io/npm/dm/@bevry/pluginloader.svg\" alt=\"NPM downloads\" /></a></span>\n<span class=\"badge-daviddm\"><a href=\"https://david-dm.org/bevry/pluginloader\" title=\"View the status of this project's dependencies on DavidDM\"><img src=\"https://img.shields.io/david/bevry/pluginloader.svg\" alt=\"Dependency Status\" /></a></span>\n<span class=\"badge-daviddmdev\"><a href=\"https://david-dm.org/bevry/pluginloader#info=devDependencies\" title=\"View the status of this project's development dependencies on DavidDM\"><img src=\"https://img.shields.io/david/dev/bevry/pluginloader.svg\" alt=\"Dev Dependency Status\" /></a></span>\n<br class=\"badge-separator\" />\n<span class=\"badge-githubsponsors\"><a href=\"https://github.com/sponsors/balupton\" title=\"Donate to this project using GitHub Sponsors\"><img src=\"https://img.shields.io/badge/github-donate-yellow.svg\" alt=\"GitHub Sponsors donate button\" /></a></span>\n<span class=\"badge-patreon\"><a href=\"https://patreon.com/bevry\" title=\"Donate to this project using Patreon\"><img src=\"https://img.shields.io/badge/patreon-donate-yellow.svg\" alt=\"Patreon donate button\" /></a></span>\n<span class=\"badge-flattr\"><a href=\"https://flattr.com/profile/balupton\" title=\"Donate to this project using Flattr\"><img src=\"https://img.shields.io/badge/flattr-donate-yellow.svg\" alt=\"Flattr donate button\" /></a></span>\n<span class=\"badge-liberapay\"><a href=\"https://liberapay.com/bevry\" title=\"Donate to this project using Liberapay\"><img src=\"https://img.shields.io/badge/liberapay-donate-yellow.svg\" alt=\"Liberapay donate button\" /></a></span>\n<span class=\"badge-buymeacoffee\"><a href=\"https://buymeacoffee.com/balupton\" title=\"Donate to this project using Buy Me A Coffee\"><img src=\"https://img.shields.io/badge/buy%20me%20a%20coffee-donate-yellow.svg\" alt=\"Buy Me A Coffee donate button\" /></a></span>\n<span class=\"badge-opencollective\"><a href=\"https://opencollective.com/bevry\" title=\"Donate to this project using Open Collective\"><img src=\"https://img.shields.io/badge/open%20collective-donate-yellow.svg\" alt=\"Open Collective donate button\" /></a></span>\n<span class=\"badge-crypto\"><a href=\"https://bevry.me/crypto\" title=\"Donate to this project using Cryptocurrency\"><img src=\"https://img.shields.io/badge/crypto-donate-yellow.svg\" alt=\"crypto donate button\" /></a></span>\n<span class=\"badge-paypal\"><a href=\"https://bevry.me/paypal\" title=\"Donate to this project using Paypal\"><img src=\"https://img.shields.io/badge/paypal-donate-yellow.svg\" alt=\"PayPal donate button\" /></a></span>\n<span class=\"badge-wishlist\"><a href=\"https://bevry.me/wishlist\" title=\"Buy an item on our wishlist for us\"><img src=\"https://img.shields.io/badge/wishlist-donate-yellow.svg\" alt=\"Wishlist browse button\" /></a></span>\n\n<!-- /BADGES -->\n\n\n<!-- DESCRIPTION/ -->\n\nA class for loading, verifying, and creating plugins. Used by DocPad for years.\n\n<!-- /DESCRIPTION -->\n\n\n## Usage\n\n[Complete API Documentation.](http://master.pluginloader.bevry.surge.sh/docs/globals.html)\n\n### Basics\n\nCreate your project:\n\n1. `mkdir my-project`\n1. `cd my-project`\n\nCreate your plugin:\n\n1. `mkdir myplugin`\n1. `cd myplugin`\n1. `npm init`\n1. `index.js` to:\n\n    ```javascript\n    module.exports = function (BasePlugin) {\n        return class MyPlugin extends BasePlugin {\n            constructor(...args) {\n                super(...args)\n                console.log('hello from my plugin')\n            }\n        }\n    }\n    ```\n\n1. `cd ..`\n\nCreate your plugin loader:\n\n1. `mkdir myapp`\n1. `cd myapp`\n1. `npm init`\n1. `index.js` to:\n\n    ```javascript\n    import PluginLoader from '@bevry/pluginloader'\n\n    class BasePlugin {\n        constructor() {\n            console.log('hello from base plugin')\n        }\n    }\n\n    const pluginLoader = new PluginLoader({\n        BasePlugin,\n        pluginPath: require('path').resolve(__dirname, '..', 'myplugin'),\n    })\n    ```\n\n1. `cd ..`\n\nRun the project:\n\n1. `node myapp/index.js`\n\n### Ecosystem\n\n-   [pluginclerk](https://github.com/bevry/pluginclerk) a project for fetching compatible plugins from the npm registry\n-   [docpad-baseplugin](https://github.com/docpad/docpad-baseplugin) the BasePlugin class that DocPad uses\n-   [docpad-plugintester](https://github.com/docpad/docpad-plugintester) testing helpers for DocPad plugins\n\n<!-- INSTALL/ -->\n\n<h2>Install</h2>\n\n<a href=\"https://npmjs.com\" title=\"npm is a package manager for javascript\"><h3>npm</h3></a>\n<ul>\n<li>Install: <code>npm install --save @bevry/pluginloader</code></li>\n<li>Import: <code>import pkg from ('@bevry/pluginloader')</code></li>\n<li>Require: <code>const pkg = require('@bevry/pluginloader').default</code></li>\n</ul>\n\n<h3><a href=\"https://editions.bevry.me\" title=\"Editions are the best way to produce and consume packages you care about.\">Editions</a></h3>\n\n<p>This package is published with the following editions:</p>\n\n<ul><li><code>@bevry/pluginloader/source/index.ts</code> is <a href=\"https://www.typescriptlang.org/\" title=\"TypeScript is a typed superset of JavaScript that compiles to plain JavaScript. \">TypeScript</a> source code with <a href=\"https://babeljs.io/docs/learn-es2015/#modules\" title=\"ECMAScript Modules\">Import</a> for modules</li>\n<li><code>@bevry/pluginloader</code> aliases <code>@bevry/pluginloader/edition-esnext/index.js</code></li>\n<li><code>@bevry/pluginloader/edition-esnext/index.js</code> is <a href=\"https://www.typescriptlang.org/\" title=\"TypeScript is a typed superset of JavaScript that compiles to plain JavaScript. \">TypeScript</a> compiled against <a href=\"https://en.wikipedia.org/wiki/ECMAScript#ES.Next\" title=\"ECMAScript Next\">ESNext</a> for <a href=\"https://nodejs.org\" title=\"Node.js is a JavaScript runtime built on Chrome's V8 JavaScript engine\">Node.js</a> with <a href=\"https://nodejs.org/dist/latest-v5.x/docs/api/modules.html\" title=\"Node/CJS Modules\">Require</a> for modules</li></ul>\n\n<!-- /INSTALL -->\n\n\n<!-- HISTORY/ -->\n\n<h2>History</h2>\n\n<a href=\"https://github.com/bevry/pluginloader/blob/master/HISTORY.md#files\">Discover the release history by heading on over to the <code>HISTORY.md</code> file.</a>\n\n<!-- /HISTORY -->\n\n\n<!-- CONTRIBUTE/ -->\n\n<h2>Contribute</h2>\n\n<a href=\"https://github.com/bevry/pluginloader/blob/master/CONTRIBUTING.md#files\">Discover how you can contribute by heading on over to the <code>CONTRIBUTING.md</code> file.</a>\n\n<!-- /CONTRIBUTE -->\n\n\n<!-- BACKERS/ -->\n\n<h2>Backers</h2>\n\n<h3>Maintainers</h3>\n\nThese amazing people are maintaining this project:\n\n<ul><li><a href=\"https://balupton.com\">Benjamin Lupton</a> — <a href=\"https://github.com/bevry/pluginloader/commits?author=balupton\" title=\"View the GitHub contributions of Benjamin Lupton on repository bevry/pluginloader\">view contributions</a></li></ul>\n\n<h3>Sponsors</h3>\n\nNo sponsors yet! Will you be the first?\n\n<span class=\"badge-githubsponsors\"><a href=\"https://github.com/sponsors/balupton\" title=\"Donate to this project using GitHub Sponsors\"><img src=\"https://img.shields.io/badge/github-donate-yellow.svg\" alt=\"GitHub Sponsors donate button\" /></a></span>\n<span class=\"badge-patreon\"><a href=\"https://patreon.com/bevry\" title=\"Donate to this project using Patreon\"><img src=\"https://img.shields.io/badge/patreon-donate-yellow.svg\" alt=\"Patreon donate button\" /></a></span>\n<span class=\"badge-flattr\"><a href=\"https://flattr.com/profile/balupton\" title=\"Donate to this project using Flattr\"><img src=\"https://img.shields.io/badge/flattr-donate-yellow.svg\" alt=\"Flattr donate button\" /></a></span>\n<span class=\"badge-liberapay\"><a href=\"https://liberapay.com/bevry\" title=\"Donate to this project using Liberapay\"><img src=\"https://img.shields.io/badge/liberapay-donate-yellow.svg\" alt=\"Liberapay donate button\" /></a></span>\n<span class=\"badge-buymeacoffee\"><a href=\"https://buymeacoffee.com/balupton\" title=\"Donate to this project using Buy Me A Coffee\"><img src=\"https://img.shields.io/badge/buy%20me%20a%20coffee-donate-yellow.svg\" alt=\"Buy Me A Coffee donate button\" /></a></span>\n<span class=\"badge-opencollective\"><a href=\"https://opencollective.com/bevry\" title=\"Donate to this project using Open Collective\"><img src=\"https://img.shields.io/badge/open%20collective-donate-yellow.svg\" alt=\"Open Collective donate button\" /></a></span>\n<span class=\"badge-crypto\"><a href=\"https://bevry.me/crypto\" title=\"Donate to this project using Cryptocurrency\"><img src=\"https://img.shields.io/badge/crypto-donate-yellow.svg\" alt=\"crypto donate button\" /></a></span>\n<span class=\"badge-paypal\"><a href=\"https://bevry.me/paypal\" title=\"Donate to this project using Paypal\"><img src=\"https://img.shields.io/badge/paypal-donate-yellow.svg\" alt=\"PayPal donate button\" /></a></span>\n<span class=\"badge-wishlist\"><a href=\"https://bevry.me/wishlist\" title=\"Buy an item on our wishlist for us\"><img src=\"https://img.shields.io/badge/wishlist-donate-yellow.svg\" alt=\"Wishlist browse button\" /></a></span>\n\n<h3>Contributors</h3>\n\nThese amazing people have contributed code to this project:\n\n<ul><li><a href=\"https://balupton.com\">Benjamin Lupton</a> — <a href=\"https://github.com/bevry/pluginloader/commits?author=balupton\" title=\"View the GitHub contributions of Benjamin Lupton on repository bevry/pluginloader\">view contributions</a></li></ul>\n\n<a href=\"https://github.com/bevry/pluginloader/blob/master/CONTRIBUTING.md#files\">Discover how you can contribute by heading on over to the <code>CONTRIBUTING.md</code> file.</a>\n\n<!-- /BACKERS -->\n\n\n<!-- LICENSE/ -->\n\n<h2>License</h2>\n\nUnless stated otherwise all works are:\n\n<ul><li>Copyright &copy; 2018+ <a href=\"https://balupton.com\">Benjamin Lupton</a></li></ul>\n\nand licensed under:\n\n<ul><li><a href=\"http://spdx.org/licenses/MIT.html\">MIT License</a></li></ul>\n\n<!-- /LICENSE -->\n","readmeFilename":"README.md","_id":"@bevry/pluginloader@4.8.0-next.1592762938.a2e3adf8847e4c15f0ef5349e5bd6d2da4a647d7","_nodeVersion":"14.4.0","_npmVersion":"6.14.5","dist":{"integrity":"sha512-Y9XNo9Q2CmcyWYkPOhly4YbKXbR/UEL1jvwksHKtSYllWJmJggeVVujyneGIdBfw+kY8/xbyEBByMljLbco7WA==","shasum":"3e4fdd1f923cd72d93ac9ae3946e8f66fa2fc6f6","tarball":"https://registry.npmjs.org/@bevry/pluginloader/-/pluginloader-4.8.0-next.1592762938.a2e3adf8847e4c15f0ef5349e5bd6d2da4a647d7.tgz","fileCount":9,"unpackedSize":45901,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe76I8CRA9TVsSAnZWagAAl24P/RbE2SSEWdLV3nQaZL5Z\nf0L0DQ1MTq7R81eAWMUO7UTcn2t1o67jvVhjsOiRkbZrz8vUuau61OcIja2C\nBoUhjguIz2xS6PzLZ0/SBA5C9woA4mN1DvFtnqnBaDwUUVoKDqkl82OMTiAt\nd5mlusz8/d4Ipdl+6SCI/UHorUXLRoBS/ewwgd/MaWkOOrB4cwm/kqpufuib\ng2r6oyq09fkOEI4G6dpIzG+Of0YasM3lsukP85BDIciVoMyiNXd32ePTFb/K\nwve+P6+7CfJM3T8t0c/sQ7OxM3rLSoA5pXAQwsy9TOJfYXHMawRh49l3II3n\nL+1f03osgQNTjC76gkfu/MhZvigWJYtut1oN/0yQ0Fc5WZnW47ejGtKFe5o9\nIgBSI6zjLKc7tM9dPMlGfz0dfjDZIffqHAx9vf/NrxOgW/UVCJr7NkYkPMtZ\nSGvfrmJRrpTM2Nv8mcEReJQQIG5G1Ew65ZnV00FGBXs2TBtqtOmt/iUSzb2r\n8D1SpZRyOQT1yE2zSE81sa5qAVXTP6WiUPH7y0bO1nGJ2GlKlMP4WXz49gye\nWllHZ9X2v+/qhI7hB9shfPMlMxpz6XGGK97quIRKoc/1MZlTkvofdHLlWAQ1\nuZ4XRigRTsUl+Sfk915i/Xnmw2d/tMv0CZLi4c+jwTuc246pOAdt0edC2ISM\nJn/I\r\n=NSx0\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDCIDuBqdlc2tpJoSW/U4NDyALw5x3465YthcaU8pSSLAiEAljMCG9ZInPM2DYagYOSjSkWKVvgjw6UDJCLYC/C928I="}]},"_npmUser":{"name":"bevryme","email":"us@bevry.me"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/pluginloader_4.8.0-next.1592762938.a2e3adf8847e4c15f0ef5349e5bd6d2da4a647d7_1592762939907_0.8028924909332633"},"_hasShrinkwrap":false},"4.8.0":{"name":"@bevry/pluginloader","version":"4.8.0","description":"A class for loading, verifying, and creating plugins. Used by DocPad for years.","homepage":"https://github.com/bevry/pluginloader","license":"MIT","keywords":["bevry","docpad","export-default","loader","node","plugin","plugins","typed","types","typescript"],"badges":{"list":["travisci","npmversion","npmdownloads","daviddm","daviddmdev","---","githubsponsors","patreon","flattr","liberapay","buymeacoffee","opencollective","crypto","paypal","wishlist"],"config":{"githubSponsorsUsername":"balupton","buymeacoffeeUsername":"balupton","cryptoURL":"https://bevry.me/crypto","flattrUsername":"balupton","liberapayUsername":"bevry","opencollectiveUsername":"bevry","patreonUsername":"bevry","paypalURL":"https://bevry.me/paypal","wishlistURL":"https://bevry.me/wishlist","travisTLD":"com","githubUsername":"bevry","githubRepository":"pluginloader","githubSlug":"bevry/pluginloader","npmPackageName":"@bevry/pluginloader"}},"funding":"https://bevry.me/fund","author":{"name":"2018+ Benjamin Lupton","email":"b@lupton.cc","url":"https://balupton.com"},"maintainers":[{"email":"b@lupton.cc","name":"balupton"},{"email":"us@bevry.me","name":"bevryme"},{"email":"sumitrai96@gmail.com","name":"sumitrai"}],"contributors":[{"name":"Benjamin Lupton","email":"b@lupton.cc","url":"https://github.com/balupton"}],"bugs":{"url":"https://github.com/bevry/pluginloader/issues"},"repository":{"type":"git","url":"git+https://github.com/bevry/pluginloader.git"},"engines":{"node":">=10"},"editions":[{"description":"TypeScript source code with Import for modules","directory":"source","entry":"index.ts","tags":["typescript","import"],"engines":false},{"description":"TypeScript compiled against ESNext for Node.js with Require for modules","directory":"edition-esnext","entry":"index.js","tags":["javascript","esnext","require"],"engines":{"node":"10 || 12 || 13 || 14"}}],"types":"./compiled-types/","type":"commonjs","main":"edition-esnext/index.js","dependencies":{"errlop":"3.5.0","semver":"^7.3.2","typechecker":"7.5.0"},"devDependencies":{"@bevry/update-contributors":"^1.9.0","@typescript-eslint/eslint-plugin":"^3.3.0","@typescript-eslint/parser":"^3.3.0","assert-helpers":"^6.8.0","eslint":"^7.3.0","eslint-config-bevry":"^3.8.0","eslint-config-prettier":"^6.7.0","eslint-plugin-prettier":"^3.1.4","kava":"^5.7.0","make-deno-edition":"^0.9.1","prettier":"^2.0.5","projectz":"^2.9.0","surge":"^0.21.3","typedoc":"^0.17.7","typescript":"^3.9.5","valid-directory":"^2.5.0"},"scripts":{"our:clean":"rm -Rf ./docs ./edition* ./es2015 ./es5 ./out ./.next","our:compile":"yarn run our:compile:deno && yarn run our:compile:edition-esnext && yarn run our:compile:types","our:compile:deno":"make-deno-edition --attempt","our:compile:edition-esnext":"tsc --module commonjs --target ESNext --outDir ./edition-esnext --project tsconfig.json && ( test ! -d edition-esnext/source || ( mv edition-esnext/source edition-temp && rm -Rf edition-esnext && mv edition-temp edition-esnext ) )","our:compile:types":"tsc --project tsconfig.json --emitDeclarationOnly --declaration --declarationMap --declarationDir ./compiled-types && ( test ! -d compiled-types/source || ( mv compiled-types/source edition-temp && rm -Rf compiled-types && mv edition-temp compiled-types ) )","our:deploy":"echo no need for this project","our:meta":"yarn run our:meta:contributors && yarn run our:meta:docs && yarn run our:meta:projectz","our:meta:contributors":"update-contributors","our:meta:docs":"yarn run our:meta:docs:typedoc","our:meta:docs:typedoc":"rm -Rf ./docs && typedoc --mode file --exclude '**/+(*test*|node_modules)' --excludeExternals --name \"$npm_package_name\" --readme ./README.md --out ./docs ./source","our:meta:projectz":"projectz compile","our:release":"yarn run our:release:prepare && yarn run our:release:check-changelog && yarn run our:release:check-dirty && yarn run our:release:tag && yarn run our:release:push","our:release:check-changelog":"cat ./HISTORY.md | grep v$npm_package_version || (echo add a changelog entry for v$npm_package_version && exit -1)","our:release:check-dirty":"git diff --exit-code","our:release:prepare":"yarn run our:clean && yarn run our:compile && yarn run our:test && yarn run our:meta","our:release:push":"git push origin master && git push origin --tags","our:release:tag":"export MESSAGE=$(cat ./HISTORY.md | sed -n \"/## v$npm_package_version/,/##/p\" | sed 's/## //' | awk 'NR>1{print buf}{buf = $0}') && test \"$MESSAGE\" || (echo 'proper changelog entry not found' && exit -1) && git tag v$npm_package_version -am \"$MESSAGE\"","our:setup":"yarn run our:setup:install","our:setup:install":"/usr/local/bin/yarn install --ignore-engines","our:test":"yarn run our:verify && yarn test","our:verify":"yarn run our:verify:directory && yarn run our:verify:eslint && yarn run our:verify:prettier","our:verify:directory":"valid-directory","our:verify:eslint":"eslint --fix --ignore-pattern '**/*.d.ts' --ignore-pattern '**/vendor/' --ignore-pattern '**/node_modules/' --ext .mjs,.js,.jsx,.ts,.tsx ./source","our:verify:prettier":"prettier --write .","test":"node ./edition-esnext/test.js"},"eslintConfig":{"extends":["bevry"]},"prettier":{"semi":false,"singleQuote":true},"gitHead":"a2e3adf8847e4c15f0ef5349e5bd6d2da4a647d7","_id":"@bevry/pluginloader@4.8.0","_nodeVersion":"14.4.0","_npmVersion":"6.14.5","dist":{"integrity":"sha512-N5FCugwR3/mgjmDkhhcujdZgbc2I18BIe45RAmK5Qwlm6SGtcZgdlDCqrJkZOm0afKkWrBVynA4uMLXwfLP70g==","shasum":"76f405ec69ef4eb995800359bfe7c053a6c9ff10","tarball":"https://registry.npmjs.org/@bevry/pluginloader/-/pluginloader-4.8.0.tgz","fileCount":9,"unpackedSize":45844,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe76KGCRA9TVsSAnZWagAAaF8P/01rWcEn4myeYRqRvFhy\nMSa+ifYzlidlpvq85yXyvAPs8MlLvln4qFH/3ogX4rncTYLt/TF2HpoH9UDL\nrnZOxUsHIhLF3rkU/Aj5lkwblOrIPOgFAdP9GuV8ngRH7+6qBl41eE4vdBgJ\ngEZUn5iW0EwXGPngPelBOPPQNzyAzv4GTBi+wdB2gZoWuN46+GjN3qBUlOPw\nDophjYpyEwfTPxOlqFGvFe+BLZ4UYYvjEeTRSMAw49XGgZAMmDxv0ef/fVmz\nYl3sWXFb9IHjthbZIBBGDShx/sE7lW0HZ/Uj9X6yVdPmT4745WJTFb8TW86y\ncT+4GQTZ/a4lvQsvqdHO5auUxVs9ufGplK2PTQhanwm1tcdRnGwQrat/hoW9\nahqfHPAiVKGvSrL6vCsan9Lt0z3CLG2leW7CyTWoPTl7QQA7Tl8napfnOTL2\nug73gMi0NZ7awz7le+euvAnAwZV8mEqJXh3zjftD28KgVoGfozje02p8l2um\nt8c3jrU+vkJdbzWuwJ7m66EZoY3s9WPQe+3Sb1EFmHXgmyJ549NC+opaIsOX\nnchVHsdb3Bi6hhvKWEaxbdpbvoyGde47PPV8pO2yHiUrmJ6sJkens+mHaU41\nncyFzIY7iDY4eALdHH+k4zCz08//9yANn8GfOXYUt0mNuSon+kYhbH4+/cOf\nG3Zd\r\n=rUoV\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAfnUHSnyjeE35GTVOr9MGKQGoFGrgbt9+OanEmb8ZXJAiEAy+G1532Xn4tVJGE2alME8GWoFGbugjuS6hYSti4VYAI="}]},"_npmUser":{"name":"bevryme","email":"us@bevry.me"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/pluginloader_4.8.0_1592763013892_0.2744621643022953"},"_hasShrinkwrap":false},"4.9.0-next.1593058626.f2d8d3525b1e4fa28c848b4f4a79733dd51cea44":{"name":"@bevry/pluginloader","version":"4.9.0-next.1593058626.f2d8d3525b1e4fa28c848b4f4a79733dd51cea44","description":"A class for loading, verifying, and creating plugins. Used by DocPad for years.","homepage":"https://github.com/bevry/pluginloader","license":"MIT","keywords":["bevry","docpad","export-default","loader","node","plugin","plugins","typed","types","typescript"],"badges":{"list":["travisci","npmversion","npmdownloads","daviddm","daviddmdev","---","githubsponsors","patreon","flattr","liberapay","buymeacoffee","opencollective","crypto","paypal","wishlist"],"config":{"githubSponsorsUsername":"balupton","buymeacoffeeUsername":"balupton","cryptoURL":"https://bevry.me/crypto","flattrUsername":"balupton","liberapayUsername":"bevry","opencollectiveUsername":"bevry","patreonUsername":"bevry","paypalURL":"https://bevry.me/paypal","wishlistURL":"https://bevry.me/wishlist","travisTLD":"com","githubUsername":"bevry","githubRepository":"pluginloader","githubSlug":"bevry/pluginloader","npmPackageName":"@bevry/pluginloader"}},"funding":"https://bevry.me/fund","author":{"name":"2018+ Benjamin Lupton","email":"b@lupton.cc","url":"https://balupton.com"},"maintainers":[{"email":"b@lupton.cc","name":"balupton"},{"email":"us@bevry.me","name":"bevryme"},{"email":"sumitrai96@gmail.com","name":"sumitrai"}],"contributors":[{"name":"Benjamin Lupton","email":"b@lupton.cc","url":"https://github.com/balupton"}],"bugs":{"url":"https://github.com/bevry/pluginloader/issues"},"repository":{"type":"git","url":"git+https://github.com/bevry/pluginloader.git"},"engines":{"node":">=10"},"editions":[{"description":"TypeScript source code with Import for modules","directory":"source","entry":"index.ts","tags":["typescript","import"],"engines":false},{"description":"TypeScript compiled against ESNext for Node.js with Require for modules","directory":"edition-esnext","entry":"index.js","tags":["javascript","esnext","require"],"engines":{"node":"10 || 12 || 13 || 14"}}],"types":"./compiled-types/","type":"commonjs","main":"edition-esnext/index.js","dependencies":{"errlop":"3.10.0","semver":"^7.3.2","typechecker":"7.10.0"},"devDependencies":{"@bevry/update-contributors":"^1.12.0","@typescript-eslint/eslint-plugin":"^3.4.0","@typescript-eslint/parser":"^3.4.0","assert-helpers":"^6.13.0","eslint":"^7.3.1","eslint-config-bevry":"^3.13.0","eslint-config-prettier":"^6.11.0","eslint-plugin-prettier":"^3.1.4","kava":"^5.8.0","make-deno-edition":"^0.14.0","prettier":"^2.0.5","projectz":"^2.10.1","surge":"^0.21.3","typedoc":"^0.17.7","typescript":"^3.9.5","valid-directory":"^2.5.0"},"scripts":{"our:clean":"rm -Rf ./docs ./edition* ./es2015 ./es5 ./out ./.next","our:compile":"yarn run our:compile:deno && yarn run our:compile:edition-esnext && yarn run our:compile:types","our:compile:deno":"make-deno-edition --attempt","our:compile:edition-esnext":"tsc --module commonjs --target ESNext --outDir ./edition-esnext --project tsconfig.json && ( test ! -d edition-esnext/source || ( mv edition-esnext/source edition-temp && rm -Rf edition-esnext && mv edition-temp edition-esnext ) )","our:compile:types":"tsc --project tsconfig.json --emitDeclarationOnly --declaration --declarationMap --declarationDir ./compiled-types && ( test ! -d compiled-types/source || ( mv compiled-types/source edition-temp && rm -Rf compiled-types && mv edition-temp compiled-types ) )","our:deploy":"echo no need for this project","our:meta":"yarn run our:meta:contributors && yarn run our:meta:docs && yarn run our:meta:projectz","our:meta:contributors":"update-contributors","our:meta:docs":"yarn run our:meta:docs:typedoc","our:meta:docs:typedoc":"rm -Rf ./docs && typedoc --mode file --exclude '**/+(*test*|node_modules)' --excludeExternals --name \"$npm_package_name\" --readme ./README.md --out ./docs ./source","our:meta:projectz":"projectz compile","our:release":"yarn run our:release:prepare && yarn run our:release:check-changelog && yarn run our:release:check-dirty && yarn run our:release:tag && yarn run our:release:push","our:release:check-changelog":"cat ./HISTORY.md | grep v$npm_package_version || (echo add a changelog entry for v$npm_package_version && exit -1)","our:release:check-dirty":"git diff --exit-code","our:release:prepare":"yarn run our:clean && yarn run our:compile && yarn run our:test && yarn run our:meta","our:release:push":"git push origin master && git push origin --tags","our:release:tag":"export MESSAGE=$(cat ./HISTORY.md | sed -n \"/## v$npm_package_version/,/##/p\" | sed 's/## //' | awk 'NR>1{print buf}{buf = $0}') && test \"$MESSAGE\" || (echo 'proper changelog entry not found' && exit -1) && git tag v$npm_package_version -am \"$MESSAGE\"","our:setup":"yarn run our:setup:install","our:setup:install":"/usr/local/bin/yarn install --ignore-engines","our:test":"yarn run our:verify && yarn test","our:verify":"yarn run our:verify:directory && yarn run our:verify:eslint && yarn run our:verify:prettier","our:verify:directory":"valid-directory","our:verify:eslint":"eslint --fix --ignore-pattern '**/*.d.ts' --ignore-pattern '**/vendor/' --ignore-pattern '**/node_modules/' --ext .mjs,.js,.jsx,.ts,.tsx ./source","our:verify:prettier":"prettier --write .","test":"node ./edition-esnext/test.js"},"eslintConfig":{"extends":["bevry"]},"prettier":{"semi":false,"singleQuote":true},"gitHead":"f2d8d3525b1e4fa28c848b4f4a79733dd51cea44","readme":"<!-- TITLE/ -->\n\n<h1>@bevry/pluginloader</h1>\n\n<!-- /TITLE -->\n\n\n<!-- BADGES/ -->\n\n<span class=\"badge-travisci\"><a href=\"http://travis-ci.com/bevry/pluginloader\" title=\"Check this project's build status on TravisCI\"><img src=\"https://img.shields.io/travis/com/bevry/pluginloader/master.svg\" alt=\"Travis CI Build Status\" /></a></span>\n<span class=\"badge-npmversion\"><a href=\"https://npmjs.org/package/@bevry/pluginloader\" title=\"View this project on NPM\"><img src=\"https://img.shields.io/npm/v/@bevry/pluginloader.svg\" alt=\"NPM version\" /></a></span>\n<span class=\"badge-npmdownloads\"><a href=\"https://npmjs.org/package/@bevry/pluginloader\" title=\"View this project on NPM\"><img src=\"https://img.shields.io/npm/dm/@bevry/pluginloader.svg\" alt=\"NPM downloads\" /></a></span>\n<span class=\"badge-daviddm\"><a href=\"https://david-dm.org/bevry/pluginloader\" title=\"View the status of this project's dependencies on DavidDM\"><img src=\"https://img.shields.io/david/bevry/pluginloader.svg\" alt=\"Dependency Status\" /></a></span>\n<span class=\"badge-daviddmdev\"><a href=\"https://david-dm.org/bevry/pluginloader#info=devDependencies\" title=\"View the status of this project's development dependencies on DavidDM\"><img src=\"https://img.shields.io/david/dev/bevry/pluginloader.svg\" alt=\"Dev Dependency Status\" /></a></span>\n<br class=\"badge-separator\" />\n<span class=\"badge-githubsponsors\"><a href=\"https://github.com/sponsors/balupton\" title=\"Donate to this project using GitHub Sponsors\"><img src=\"https://img.shields.io/badge/github-donate-yellow.svg\" alt=\"GitHub Sponsors donate button\" /></a></span>\n<span class=\"badge-patreon\"><a href=\"https://patreon.com/bevry\" title=\"Donate to this project using Patreon\"><img src=\"https://img.shields.io/badge/patreon-donate-yellow.svg\" alt=\"Patreon donate button\" /></a></span>\n<span class=\"badge-flattr\"><a href=\"https://flattr.com/profile/balupton\" title=\"Donate to this project using Flattr\"><img src=\"https://img.shields.io/badge/flattr-donate-yellow.svg\" alt=\"Flattr donate button\" /></a></span>\n<span class=\"badge-liberapay\"><a href=\"https://liberapay.com/bevry\" title=\"Donate to this project using Liberapay\"><img src=\"https://img.shields.io/badge/liberapay-donate-yellow.svg\" alt=\"Liberapay donate button\" /></a></span>\n<span class=\"badge-buymeacoffee\"><a href=\"https://buymeacoffee.com/balupton\" title=\"Donate to this project using Buy Me A Coffee\"><img src=\"https://img.shields.io/badge/buy%20me%20a%20coffee-donate-yellow.svg\" alt=\"Buy Me A Coffee donate button\" /></a></span>\n<span class=\"badge-opencollective\"><a href=\"https://opencollective.com/bevry\" title=\"Donate to this project using Open Collective\"><img src=\"https://img.shields.io/badge/open%20collective-donate-yellow.svg\" alt=\"Open Collective donate button\" /></a></span>\n<span class=\"badge-crypto\"><a href=\"https://bevry.me/crypto\" title=\"Donate to this project using Cryptocurrency\"><img src=\"https://img.shields.io/badge/crypto-donate-yellow.svg\" alt=\"crypto donate button\" /></a></span>\n<span class=\"badge-paypal\"><a href=\"https://bevry.me/paypal\" title=\"Donate to this project using Paypal\"><img src=\"https://img.shields.io/badge/paypal-donate-yellow.svg\" alt=\"PayPal donate button\" /></a></span>\n<span class=\"badge-wishlist\"><a href=\"https://bevry.me/wishlist\" title=\"Buy an item on our wishlist for us\"><img src=\"https://img.shields.io/badge/wishlist-donate-yellow.svg\" alt=\"Wishlist browse button\" /></a></span>\n\n<!-- /BADGES -->\n\n\n<!-- DESCRIPTION/ -->\n\nA class for loading, verifying, and creating plugins. Used by DocPad for years.\n\n<!-- /DESCRIPTION -->\n\n\n## Usage\n\n[Complete API Documentation.](http://master.pluginloader.bevry.surge.sh/docs/globals.html)\n\n### Basics\n\nCreate your project:\n\n1. `mkdir my-project`\n1. `cd my-project`\n\nCreate your plugin:\n\n1. `mkdir myplugin`\n1. `cd myplugin`\n1. `npm init`\n1. `index.js` to:\n\n    ```javascript\n    module.exports = function (BasePlugin) {\n        return class MyPlugin extends BasePlugin {\n            constructor(...args) {\n                super(...args)\n                console.log('hello from my plugin')\n            }\n        }\n    }\n    ```\n\n1. `cd ..`\n\nCreate your plugin loader:\n\n1. `mkdir myapp`\n1. `cd myapp`\n1. `npm init`\n1. `index.js` to:\n\n    ```javascript\n    import PluginLoader from '@bevry/pluginloader'\n\n    class BasePlugin {\n        constructor() {\n            console.log('hello from base plugin')\n        }\n    }\n\n    const pluginLoader = new PluginLoader({\n        BasePlugin,\n        pluginPath: require('path').resolve(__dirname, '..', 'myplugin'),\n    })\n    ```\n\n1. `cd ..`\n\nRun the project:\n\n1. `node myapp/index.js`\n\n### Ecosystem\n\n-   [pluginclerk](https://github.com/bevry/pluginclerk) a project for fetching compatible plugins from the npm registry\n-   [docpad-baseplugin](https://github.com/docpad/docpad-baseplugin) the BasePlugin class that DocPad uses\n-   [docpad-plugintester](https://github.com/docpad/docpad-plugintester) testing helpers for DocPad plugins\n\n<!-- INSTALL/ -->\n\n<h2>Install</h2>\n\n<a href=\"https://npmjs.com\" title=\"npm is a package manager for javascript\"><h3>npm</h3></a>\n<ul>\n<li>Install: <code>npm install --save @bevry/pluginloader</code></li>\n<li>Import: <code>import pkg from ('@bevry/pluginloader')</code></li>\n<li>Require: <code>const pkg = require('@bevry/pluginloader').default</code></li>\n</ul>\n\n<h3><a href=\"https://editions.bevry.me\" title=\"Editions are the best way to produce and consume packages you care about.\">Editions</a></h3>\n\n<p>This package is published with the following editions:</p>\n\n<ul><li><code>@bevry/pluginloader/source/index.ts</code> is <a href=\"https://www.typescriptlang.org/\" title=\"TypeScript is a typed superset of JavaScript that compiles to plain JavaScript. \">TypeScript</a> source code with <a href=\"https://babeljs.io/docs/learn-es2015/#modules\" title=\"ECMAScript Modules\">Import</a> for modules</li>\n<li><code>@bevry/pluginloader</code> aliases <code>@bevry/pluginloader/edition-esnext/index.js</code></li>\n<li><code>@bevry/pluginloader/edition-esnext/index.js</code> is <a href=\"https://www.typescriptlang.org/\" title=\"TypeScript is a typed superset of JavaScript that compiles to plain JavaScript. \">TypeScript</a> compiled against <a href=\"https://en.wikipedia.org/wiki/ECMAScript#ES.Next\" title=\"ECMAScript Next\">ESNext</a> for <a href=\"https://nodejs.org\" title=\"Node.js is a JavaScript runtime built on Chrome's V8 JavaScript engine\">Node.js</a> with <a href=\"https://nodejs.org/dist/latest-v5.x/docs/api/modules.html\" title=\"Node/CJS Modules\">Require</a> for modules</li></ul>\n\n<!-- /INSTALL -->\n\n\n<!-- HISTORY/ -->\n\n<h2>History</h2>\n\n<a href=\"https://github.com/bevry/pluginloader/blob/master/HISTORY.md#files\">Discover the release history by heading on over to the <code>HISTORY.md</code> file.</a>\n\n<!-- /HISTORY -->\n\n\n<!-- CONTRIBUTE/ -->\n\n<h2>Contribute</h2>\n\n<a href=\"https://github.com/bevry/pluginloader/blob/master/CONTRIBUTING.md#files\">Discover how you can contribute by heading on over to the <code>CONTRIBUTING.md</code> file.</a>\n\n<!-- /CONTRIBUTE -->\n\n\n<!-- BACKERS/ -->\n\n<h2>Backers</h2>\n\n<h3>Maintainers</h3>\n\nThese amazing people are maintaining this project:\n\n<ul><li><a href=\"https://balupton.com\">Benjamin Lupton</a> — <a href=\"https://github.com/bevry/pluginloader/commits?author=balupton\" title=\"View the GitHub contributions of Benjamin Lupton on repository bevry/pluginloader\">view contributions</a></li></ul>\n\n<h3>Sponsors</h3>\n\nNo sponsors yet! Will you be the first?\n\n<span class=\"badge-githubsponsors\"><a href=\"https://github.com/sponsors/balupton\" title=\"Donate to this project using GitHub Sponsors\"><img src=\"https://img.shields.io/badge/github-donate-yellow.svg\" alt=\"GitHub Sponsors donate button\" /></a></span>\n<span class=\"badge-patreon\"><a href=\"https://patreon.com/bevry\" title=\"Donate to this project using Patreon\"><img src=\"https://img.shields.io/badge/patreon-donate-yellow.svg\" alt=\"Patreon donate button\" /></a></span>\n<span class=\"badge-flattr\"><a href=\"https://flattr.com/profile/balupton\" title=\"Donate to this project using Flattr\"><img src=\"https://img.shields.io/badge/flattr-donate-yellow.svg\" alt=\"Flattr donate button\" /></a></span>\n<span class=\"badge-liberapay\"><a href=\"https://liberapay.com/bevry\" title=\"Donate to this project using Liberapay\"><img src=\"https://img.shields.io/badge/liberapay-donate-yellow.svg\" alt=\"Liberapay donate button\" /></a></span>\n<span class=\"badge-buymeacoffee\"><a href=\"https://buymeacoffee.com/balupton\" title=\"Donate to this project using Buy Me A Coffee\"><img src=\"https://img.shields.io/badge/buy%20me%20a%20coffee-donate-yellow.svg\" alt=\"Buy Me A Coffee donate button\" /></a></span>\n<span class=\"badge-opencollective\"><a href=\"https://opencollective.com/bevry\" title=\"Donate to this project using Open Collective\"><img src=\"https://img.shields.io/badge/open%20collective-donate-yellow.svg\" alt=\"Open Collective donate button\" /></a></span>\n<span class=\"badge-crypto\"><a href=\"https://bevry.me/crypto\" title=\"Donate to this project using Cryptocurrency\"><img src=\"https://img.shields.io/badge/crypto-donate-yellow.svg\" alt=\"crypto donate button\" /></a></span>\n<span class=\"badge-paypal\"><a href=\"https://bevry.me/paypal\" title=\"Donate to this project using Paypal\"><img src=\"https://img.shields.io/badge/paypal-donate-yellow.svg\" alt=\"PayPal donate button\" /></a></span>\n<span class=\"badge-wishlist\"><a href=\"https://bevry.me/wishlist\" title=\"Buy an item on our wishlist for us\"><img src=\"https://img.shields.io/badge/wishlist-donate-yellow.svg\" alt=\"Wishlist browse button\" /></a></span>\n\n<h3>Contributors</h3>\n\nThese amazing people have contributed code to this project:\n\n<ul><li><a href=\"https://balupton.com\">Benjamin Lupton</a> — <a href=\"https://github.com/bevry/pluginloader/commits?author=balupton\" title=\"View the GitHub contributions of Benjamin Lupton on repository bevry/pluginloader\">view contributions</a></li></ul>\n\n<a href=\"https://github.com/bevry/pluginloader/blob/master/CONTRIBUTING.md#files\">Discover how you can contribute by heading on over to the <code>CONTRIBUTING.md</code> file.</a>\n\n<!-- /BACKERS -->\n\n\n<!-- LICENSE/ -->\n\n<h2>License</h2>\n\nUnless stated otherwise all works are:\n\n<ul><li>Copyright &copy; 2018+ <a href=\"https://balupton.com\">Benjamin Lupton</a></li></ul>\n\nand licensed under:\n\n<ul><li><a href=\"http://spdx.org/licenses/MIT.html\">MIT License</a></li></ul>\n\n<!-- /LICENSE -->\n","readmeFilename":"README.md","_id":"@bevry/pluginloader@4.9.0-next.1593058626.f2d8d3525b1e4fa28c848b4f4a79733dd51cea44","_nodeVersion":"14.4.0","_npmVersion":"6.14.5","dist":{"integrity":"sha512-35UK4I2yQD8d/c6q/GSt2XPLDjXcGXcYQLg9uGJ/BcXNo/PDaQR1phbgBn3ZSJUuszEak/UHGY9aSRbz9TUMXQ==","shasum":"6c26b9a43f2b7cd46a555c2a250945fd1738a2ef","tarball":"https://registry.npmjs.org/@bevry/pluginloader/-/pluginloader-4.9.0-next.1593058626.f2d8d3525b1e4fa28c848b4f4a79733dd51cea44.tgz","fileCount":9,"unpackedSize":46103,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe9CVECRA9TVsSAnZWagAAzKsP/ief2WMlIY3E8qoiUNWl\nuA0GhNagd1OvYtcxsA2nsrf5G9k6xj4eKX+Urow2NljcHyefbLF1vPeVMO41\nIgJfz3MjfiYdUi1jir2IZKXMPfI5j75w0LodJo0S3neoo2fEsH2eE2oUZRnh\nEBGYlcqph25F+osRf9mSm510r769QwCKUFaMxtQl/1EUOoTzRFCIjSusc11H\nMrzTF/tf5AbybyZEjOR0r8uoQe9PYAFmB4AZL5f0jOmZPBy7anzOD5zttFSY\nbiByn6AJX7WqmTPC3VI47ZmDBXSvdXd5TDjKKZ6fWSXG/4mZl8qX8U9pCQv/\n9TMOor3r1oLoky5F9LzBb5DXRcvkyx5c+PwmyqTnORGDeRR/6Y6EzKp2pEqe\nuKRqfqZFMExc+C6P6H0W49aenA2RZe9Y7ax+ai65K17GcfrKIZYKYNcjMeOS\nyP+ZQR2ppt4U0CPliAY/mYc3AzL8Y5haLff/17aCOuurjFlri3b84Uh6zHp+\nnTBU5gxo/sYKwKX28AZXH1ZzkEfjomU8nxRAvtuTyV+U4s202fAWgxTjNvsR\nPpEi0PAS8qCG+zTTeGUQbdFgHpN1y1HnvkR1XDHAOrzNHuPAhH9gQD7a6Ky6\n1tUUh9YRZVgxfl2rypSKbjgjokgq09eS8yT3vOhh70C64R9flit1S34Lt1GD\nhj+3\r\n=UHYA\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDw1WyHeq5vTHYiW/iAGp5l1TyjONUktU8Jtzp9lA6D9QIgC8F189WkY4/FDo1FwzPxlTQVpJB3wjVJWTr5dQ4s/rk="}]},"_npmUser":{"name":"bevryme","email":"us@bevry.me"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/pluginloader_4.9.0-next.1593058626.f2d8d3525b1e4fa28c848b4f4a79733dd51cea44_1593058627812_0.6723626933009657"},"_hasShrinkwrap":false},"4.9.0":{"name":"@bevry/pluginloader","version":"4.9.0","description":"A class for loading, verifying, and creating plugins. Used by DocPad for years.","homepage":"https://github.com/bevry/pluginloader","license":"MIT","keywords":["bevry","docpad","export-default","loader","node","plugin","plugins","typed","types","typescript"],"badges":{"list":["travisci","npmversion","npmdownloads","daviddm","daviddmdev","---","githubsponsors","patreon","flattr","liberapay","buymeacoffee","opencollective","crypto","paypal","wishlist"],"config":{"githubSponsorsUsername":"balupton","buymeacoffeeUsername":"balupton","cryptoURL":"https://bevry.me/crypto","flattrUsername":"balupton","liberapayUsername":"bevry","opencollectiveUsername":"bevry","patreonUsername":"bevry","paypalURL":"https://bevry.me/paypal","wishlistURL":"https://bevry.me/wishlist","travisTLD":"com","githubUsername":"bevry","githubRepository":"pluginloader","githubSlug":"bevry/pluginloader","npmPackageName":"@bevry/pluginloader"}},"funding":"https://bevry.me/fund","author":{"name":"2018+ Benjamin Lupton","email":"b@lupton.cc","url":"https://balupton.com"},"maintainers":[{"email":"b@lupton.cc","name":"balupton"},{"email":"us@bevry.me","name":"bevryme"},{"email":"sumitrai96@gmail.com","name":"sumitrai"}],"contributors":[{"name":"Benjamin Lupton","email":"b@lupton.cc","url":"https://github.com/balupton"}],"bugs":{"url":"https://github.com/bevry/pluginloader/issues"},"repository":{"type":"git","url":"git+https://github.com/bevry/pluginloader.git"},"engines":{"node":">=10"},"editions":[{"description":"TypeScript source code with Import for modules","directory":"source","entry":"index.ts","tags":["typescript","import"],"engines":false},{"description":"TypeScript compiled against ESNext for Node.js with Require for modules","directory":"edition-esnext","entry":"index.js","tags":["javascript","esnext","require"],"engines":{"node":"10 || 12 || 13 || 14"}}],"types":"./compiled-types/","type":"commonjs","main":"edition-esnext/index.js","dependencies":{"errlop":"3.10.0","semver":"^7.3.2","typechecker":"7.10.0"},"devDependencies":{"@bevry/update-contributors":"^1.12.0","@typescript-eslint/eslint-plugin":"^3.4.0","@typescript-eslint/parser":"^3.4.0","assert-helpers":"^6.13.0","eslint":"^7.3.1","eslint-config-bevry":"^3.13.0","eslint-config-prettier":"^6.11.0","eslint-plugin-prettier":"^3.1.4","kava":"^5.8.0","make-deno-edition":"^0.14.0","prettier":"^2.0.5","projectz":"^2.10.1","surge":"^0.21.3","typedoc":"^0.17.7","typescript":"^3.9.5","valid-directory":"^2.5.0"},"scripts":{"our:clean":"rm -Rf ./docs ./edition* ./es2015 ./es5 ./out ./.next","our:compile":"yarn run our:compile:deno && yarn run our:compile:edition-esnext && yarn run our:compile:types","our:compile:deno":"make-deno-edition --attempt","our:compile:edition-esnext":"tsc --module commonjs --target ESNext --outDir ./edition-esnext --project tsconfig.json && ( test ! -d edition-esnext/source || ( mv edition-esnext/source edition-temp && rm -Rf edition-esnext && mv edition-temp edition-esnext ) )","our:compile:types":"tsc --project tsconfig.json --emitDeclarationOnly --declaration --declarationMap --declarationDir ./compiled-types && ( test ! -d compiled-types/source || ( mv compiled-types/source edition-temp && rm -Rf compiled-types && mv edition-temp compiled-types ) )","our:deploy":"echo no need for this project","our:meta":"yarn run our:meta:contributors && yarn run our:meta:docs && yarn run our:meta:projectz","our:meta:contributors":"update-contributors","our:meta:docs":"yarn run our:meta:docs:typedoc","our:meta:docs:typedoc":"rm -Rf ./docs && typedoc --mode file --exclude '**/+(*test*|node_modules)' --excludeExternals --name \"$npm_package_name\" --readme ./README.md --out ./docs ./source","our:meta:projectz":"projectz compile","our:release":"yarn run our:release:prepare && yarn run our:release:check-changelog && yarn run our:release:check-dirty && yarn run our:release:tag && yarn run our:release:push","our:release:check-changelog":"cat ./HISTORY.md | grep v$npm_package_version || (echo add a changelog entry for v$npm_package_version && exit -1)","our:release:check-dirty":"git diff --exit-code","our:release:prepare":"yarn run our:clean && yarn run our:compile && yarn run our:test && yarn run our:meta","our:release:push":"git push origin master && git push origin --tags","our:release:tag":"export MESSAGE=$(cat ./HISTORY.md | sed -n \"/## v$npm_package_version/,/##/p\" | sed 's/## //' | awk 'NR>1{print buf}{buf = $0}') && test \"$MESSAGE\" || (echo 'proper changelog entry not found' && exit -1) && git tag v$npm_package_version -am \"$MESSAGE\"","our:setup":"yarn run our:setup:install","our:setup:install":"/usr/local/bin/yarn install --ignore-engines","our:test":"yarn run our:verify && yarn test","our:verify":"yarn run our:verify:directory && yarn run our:verify:eslint && yarn run our:verify:prettier","our:verify:directory":"valid-directory","our:verify:eslint":"eslint --fix --ignore-pattern '**/*.d.ts' --ignore-pattern '**/vendor/' --ignore-pattern '**/node_modules/' --ext .mjs,.js,.jsx,.ts,.tsx ./source","our:verify:prettier":"prettier --write .","test":"node ./edition-esnext/test.js"},"eslintConfig":{"extends":["bevry"]},"prettier":{"semi":false,"singleQuote":true},"gitHead":"f2d8d3525b1e4fa28c848b4f4a79733dd51cea44","_id":"@bevry/pluginloader@4.9.0","_nodeVersion":"14.4.0","_npmVersion":"6.14.5","dist":{"integrity":"sha512-WSxOOA6UqozME5TEORWWPF65Y91PwxWINM12hNSIWD/yIHyCeS4Pn3fpa4KDIObjTPNlMmB+/xabH64WB0j5Ow==","shasum":"47b9f653d1b25da68c5c8051aad3be67934eb7ab","tarball":"https://registry.npmjs.org/@bevry/pluginloader/-/pluginloader-4.9.0.tgz","fileCount":9,"unpackedSize":46046,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe9CWNCRA9TVsSAnZWagAAIDwP/iNHTjtJIKf1vNwDX/MV\nO9SUmj0YDhOI2bk5Uw4HT639RB6ynuJ3C9fs1LUmK3NfgjjveBz59fjtg5rm\nzRh3RrhEj4+vnpqmTXvfpxc8CI4cK4lC4EFYUh5QMWtbiKyE7xBWG4tc09VI\no5bvTMOJU21An1y7PFzZhlQtOhpQn5gt/wfvvGzEnnZICLeqm6ToHr3ZbTNH\nvy+5zQ/KuA6y9APkZAd7b8zmKo1XEod40NGP/nHCPP7sabL0FBrm41wOSH/p\nugGJ2869UrmEaqq7DeB5+DItg1kzTg3TetLIwBVZSO4+1l/SpJ5zwUGRoMMi\nXgYmhPFjbn08Of6wdeXJERM74ZZKAwUE55SZFA4trUUWIVBW0ouruFpSkjk7\nkvFlWa/4b6piKbgEF+9uF/pBHOkyUQ3eARAxh40Fx+syI8Z9LY/fYhnfNlo3\n4MAFf9I2HR536bgEae9MbQ8WBxHTchn8kn4Vq8QLxirvAIQkJFnBBKIo4+u8\nMNzs6Y1QFZcYcLNtLKlIDoUzK8NXkVPCS2XqnjWNjXUbKKc73HBBc+BzZrgr\nLqPpaC/JIy3USx45tc1mxz3u7wQHFzyRacnhFHjytTpdedszAmtfvhQmlkqF\nAs6GxFtHMc+F3lklgh6l1/gCrD1of18d/E0FDpLfhqw7wIJfsDB5gLKmZARl\nFr9n\r\n=UefF\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDnjQYaP6sqrczcOxpJkdjl+u0aXO1Iq6Nh/yW0vcJkzAiB+wvDJtYVj2ijaI/Ah02t7iCJXje6RHrG+dwA8jPIoNA=="}]},"_npmUser":{"name":"bevryme","email":"us@bevry.me"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/pluginloader_4.9.0_1593058700554_0.19744469633212813"},"_hasShrinkwrap":false},"4.10.0-next.1597385751.a1b385b5caf538ee15f5cfb68c9afe0eec1d66df":{"name":"@bevry/pluginloader","version":"4.10.0-next.1597385751.a1b385b5caf538ee15f5cfb68c9afe0eec1d66df","description":"A class for loading, verifying, and creating plugins. Used by DocPad for years.","homepage":"https://github.com/bevry/pluginloader","license":"MIT","keywords":["bevry","docpad","export-default","loader","node","plugin","plugins","typed","types","typescript"],"badges":{"list":["travisci","npmversion","npmdownloads","daviddm","daviddmdev","---","githubsponsors","patreon","flattr","liberapay","buymeacoffee","opencollective","crypto","paypal","wishlist"],"config":{"githubSponsorsUsername":"balupton","buymeacoffeeUsername":"balupton","cryptoURL":"https://bevry.me/crypto","flattrUsername":"balupton","liberapayUsername":"bevry","opencollectiveUsername":"bevry","patreonUsername":"bevry","paypalURL":"https://bevry.me/paypal","wishlistURL":"https://bevry.me/wishlist","travisTLD":"com","githubUsername":"bevry","githubRepository":"pluginloader","githubSlug":"bevry/pluginloader","npmPackageName":"@bevry/pluginloader"}},"funding":"https://bevry.me/fund","author":{"name":"2018+ Benjamin Lupton","email":"b@lupton.cc","url":"https://balupton.com"},"maintainers":[{"email":"b@lupton.cc","name":"balupton"},{"email":"us@bevry.me","name":"bevryme"},{"email":"sumitrai96@gmail.com","name":"sumitrai"}],"contributors":[{"name":"Benjamin Lupton","email":"b@lupton.cc","url":"https://github.com/balupton"}],"bugs":{"url":"https://github.com/bevry/pluginloader/issues"},"repository":{"type":"git","url":"git+https://github.com/bevry/pluginloader.git"},"engines":{"node":">=10"},"editions":[{"description":"TypeScript source code with Import for modules","directory":"source","entry":"index.ts","tags":["typescript","import"],"engines":false},{"description":"TypeScript compiled against ESNext for Node.js 10 || 12 || 13 || 14 with Require for modules","directory":"edition-esnext","entry":"index.js","tags":["javascript","esnext","require"],"engines":{"node":"10 || 12 || 13 || 14"}},{"description":"TypeScript compiled against ESNext for Node.js with Import for modules","directory":"edition-node-esm","entry":"index.js","tags":["javascript","import"],"engines":{"node":true,"browsers":false}}],"types":"./compiled-types/","type":"module","main":"edition-esnext/index.js","exports":{"node":{"import":"./edition-node-esm/index.js","require":"./edition-esnext/index.js"}},"dependencies":{"errlop":"^3.15.0","semver":"^7.3.2","typechecker":"^7.13.0"},"devDependencies":{"@bevry/update-contributors":"^1.15.0","@typescript-eslint/eslint-plugin":"^3.9.0","@typescript-eslint/parser":"^3.9.0","assert-helpers":"^6.19.0","eslint":"^7.6.0","eslint-config-bevry":"^3.18.0","eslint-config-prettier":"^6.11.0","eslint-plugin-prettier":"^3.1.4","kava":"^5.10.0","make-deno-edition":"^0.15.0","prettier":"^2.0.5","projectz":"^2.13.0","surge":"^0.21.6","typedoc":"^0.18.0","typescript":"^3.9.7","valid-directory":"^3.0.0"},"scripts":{"our:clean":"rm -Rf ./docs ./edition* ./es2015 ./es5 ./out ./.next","our:compile":"npm run our:compile:deno && npm run our:compile:edition-esnext && npm run our:compile:edition-node-esm && npm run our:compile:types","our:compile:deno":"make-deno-edition --attempt","our:compile:edition-esnext":"tsc --module commonjs --target ESNext --outDir ./edition-esnext --project tsconfig.json && ( test ! -d edition-esnext/source || ( mv edition-esnext/source edition-temp && rm -Rf edition-esnext && mv edition-temp edition-esnext ) ) && echo '{\"type\": \"commonjs\"}' > edition-esnext/package.json","our:compile:edition-node-esm":"tsc --module ESNext --target ESNext --outDir ./edition-node-esm --project tsconfig.json && ( test ! -d edition-node-esm/source || ( mv edition-node-esm/source edition-temp && rm -Rf edition-node-esm && mv edition-temp edition-node-esm ) ) && echo '{\"type\": \"module\"}' > edition-node-esm/package.json","our:compile:types":"tsc --project tsconfig.json --emitDeclarationOnly --declaration --declarationMap --declarationDir ./compiled-types && ( test ! -d compiled-types/source || ( mv compiled-types/source edition-temp && rm -Rf compiled-types && mv edition-temp compiled-types ) )","our:deploy":"echo no need for this project","our:meta":"npm run our:meta:contributors && npm run our:meta:docs && npm run our:meta:projectz","our:meta:contributors":"update-contributors","our:meta:docs":"npm run our:meta:docs:typedoc","our:meta:docs:typedoc":"rm -Rf ./docs && typedoc --mode file --exclude '**/+(*test*|node_modules)' --excludeExternals --name \"$npm_package_name\" --readme ./README.md --out ./docs ./source","our:meta:projectz":"projectz compile","our:release":"npm run our:release:prepare && npm run our:release:check-changelog && npm run our:release:check-dirty && npm run our:release:tag && npm run our:release:push","our:release:check-changelog":"cat ./HISTORY.md | grep v$npm_package_version || (echo add a changelog entry for v$npm_package_version && exit -1)","our:release:check-dirty":"git diff --exit-code","our:release:prepare":"npm run our:clean && npm run our:compile && npm run our:test && npm run our:meta","our:release:push":"git push origin master && git push origin --tags","our:release:tag":"export MESSAGE=$(cat ./HISTORY.md | sed -n \"/## v$npm_package_version/,/##/p\" | sed 's/## //' | awk 'NR>1{print buf}{buf = $0}') && test \"$MESSAGE\" || (echo 'proper changelog entry not found' && exit -1) && git tag v$npm_package_version -am \"$MESSAGE\"","our:setup":"npm run our:setup:install","our:setup:install":"npm install","our:test":"npm run our:verify && npm test","our:verify":"npm run our:verify:directory && npm run our:verify:eslint && npm run our:verify:prettier","our:verify:directory":"valid-directory","our:verify:eslint":"eslint --fix --ignore-pattern '**/*.d.ts' --ignore-pattern '**/vendor/' --ignore-pattern '**/node_modules/' --ext .mjs,.js,.jsx,.ts,.tsx ./source","our:verify:prettier":"prettier --write .","test":"node ./edition-esnext/test.js"},"eslintConfig":{"extends":["bevry"]},"prettier":{"semi":false,"singleQuote":true},"gitHead":"a1b385b5caf538ee15f5cfb68c9afe0eec1d66df","readme":"<!-- TITLE/ -->\n\n<h1>@bevry/pluginloader</h1>\n\n<!-- /TITLE -->\n\n\n<!-- BADGES/ -->\n\n<span class=\"badge-travisci\"><a href=\"http://travis-ci.com/bevry/pluginloader\" title=\"Check this project's build status on TravisCI\"><img src=\"https://img.shields.io/travis/com/bevry/pluginloader/master.svg\" alt=\"Travis CI Build Status\" /></a></span>\n<span class=\"badge-npmversion\"><a href=\"https://npmjs.org/package/@bevry/pluginloader\" title=\"View this project on NPM\"><img src=\"https://img.shields.io/npm/v/@bevry/pluginloader.svg\" alt=\"NPM version\" /></a></span>\n<span class=\"badge-npmdownloads\"><a href=\"https://npmjs.org/package/@bevry/pluginloader\" title=\"View this project on NPM\"><img src=\"https://img.shields.io/npm/dm/@bevry/pluginloader.svg\" alt=\"NPM downloads\" /></a></span>\n<span class=\"badge-daviddm\"><a href=\"https://david-dm.org/bevry/pluginloader\" title=\"View the status of this project's dependencies on DavidDM\"><img src=\"https://img.shields.io/david/bevry/pluginloader.svg\" alt=\"Dependency Status\" /></a></span>\n<span class=\"badge-daviddmdev\"><a href=\"https://david-dm.org/bevry/pluginloader#info=devDependencies\" title=\"View the status of this project's development dependencies on DavidDM\"><img src=\"https://img.shields.io/david/dev/bevry/pluginloader.svg\" alt=\"Dev Dependency Status\" /></a></span>\n<br class=\"badge-separator\" />\n<span class=\"badge-githubsponsors\"><a href=\"https://github.com/sponsors/balupton\" title=\"Donate to this project using GitHub Sponsors\"><img src=\"https://img.shields.io/badge/github-donate-yellow.svg\" alt=\"GitHub Sponsors donate button\" /></a></span>\n<span class=\"badge-patreon\"><a href=\"https://patreon.com/bevry\" title=\"Donate to this project using Patreon\"><img src=\"https://img.shields.io/badge/patreon-donate-yellow.svg\" alt=\"Patreon donate button\" /></a></span>\n<span class=\"badge-flattr\"><a href=\"https://flattr.com/profile/balupton\" title=\"Donate to this project using Flattr\"><img src=\"https://img.shields.io/badge/flattr-donate-yellow.svg\" alt=\"Flattr donate button\" /></a></span>\n<span class=\"badge-liberapay\"><a href=\"https://liberapay.com/bevry\" title=\"Donate to this project using Liberapay\"><img src=\"https://img.shields.io/badge/liberapay-donate-yellow.svg\" alt=\"Liberapay donate button\" /></a></span>\n<span class=\"badge-buymeacoffee\"><a href=\"https://buymeacoffee.com/balupton\" title=\"Donate to this project using Buy Me A Coffee\"><img src=\"https://img.shields.io/badge/buy%20me%20a%20coffee-donate-yellow.svg\" alt=\"Buy Me A Coffee donate button\" /></a></span>\n<span class=\"badge-opencollective\"><a href=\"https://opencollective.com/bevry\" title=\"Donate to this project using Open Collective\"><img src=\"https://img.shields.io/badge/open%20collective-donate-yellow.svg\" alt=\"Open Collective donate button\" /></a></span>\n<span class=\"badge-crypto\"><a href=\"https://bevry.me/crypto\" title=\"Donate to this project using Cryptocurrency\"><img src=\"https://img.shields.io/badge/crypto-donate-yellow.svg\" alt=\"crypto donate button\" /></a></span>\n<span class=\"badge-paypal\"><a href=\"https://bevry.me/paypal\" title=\"Donate to this project using Paypal\"><img src=\"https://img.shields.io/badge/paypal-donate-yellow.svg\" alt=\"PayPal donate button\" /></a></span>\n<span class=\"badge-wishlist\"><a href=\"https://bevry.me/wishlist\" title=\"Buy an item on our wishlist for us\"><img src=\"https://img.shields.io/badge/wishlist-donate-yellow.svg\" alt=\"Wishlist browse button\" /></a></span>\n\n<!-- /BADGES -->\n\n\n<!-- DESCRIPTION/ -->\n\nA class for loading, verifying, and creating plugins. Used by DocPad for years.\n\n<!-- /DESCRIPTION -->\n\n\n## Usage\n\n[Complete API Documentation.](http://master.pluginloader.bevry.surge.sh/docs/globals.html)\n\n### Basics\n\nCreate your project:\n\n1. `mkdir my-project`\n1. `cd my-project`\n\nCreate your plugin:\n\n1. `mkdir myplugin`\n1. `cd myplugin`\n1. `npm init`\n1. `index.js` to:\n\n    ```javascript\n    module.exports = function (BasePlugin) {\n        return class MyPlugin extends BasePlugin {\n            constructor(...args) {\n                super(...args)\n                console.log('hello from my plugin')\n            }\n        }\n    }\n    ```\n\n1. `cd ..`\n\nCreate your plugin loader:\n\n1. `mkdir myapp`\n1. `cd myapp`\n1. `npm init`\n1. `index.js` to:\n\n    ```javascript\n    import PluginLoader from '@bevry/pluginloader'\n\n    class BasePlugin {\n        constructor() {\n            console.log('hello from base plugin')\n        }\n    }\n\n    const pluginLoader = new PluginLoader({\n        BasePlugin,\n        pluginPath: require('path').resolve(__dirname, '..', 'myplugin'),\n    })\n    ```\n\n1. `cd ..`\n\nRun the project:\n\n1. `node myapp/index.js`\n\n### Ecosystem\n\n-   [pluginclerk](https://github.com/bevry/pluginclerk) a project for fetching compatible plugins from the npm registry\n-   [docpad-baseplugin](https://github.com/docpad/docpad-baseplugin) the BasePlugin class that DocPad uses\n-   [docpad-plugintester](https://github.com/docpad/docpad-plugintester) testing helpers for DocPad plugins\n\n<!-- INSTALL/ -->\n\n<h2>Install</h2>\n\n<a href=\"https://npmjs.com\" title=\"npm is a package manager for javascript\"><h3>npm</h3></a>\n<ul>\n<li>Install: <code>npm install --save @bevry/pluginloader</code></li>\n<li>Import: <code>import pkg from ('@bevry/pluginloader')</code></li>\n<li>Require: <code>const pkg = require('@bevry/pluginloader').default</code></li>\n</ul>\n\n<h3><a href=\"https://editions.bevry.me\" title=\"Editions are the best way to produce and consume packages you care about.\">Editions</a></h3>\n\n<p>This package is published with the following editions:</p>\n\n<ul><li><code>@bevry/pluginloader/source/index.ts</code> is <a href=\"https://www.typescriptlang.org/\" title=\"TypeScript is a typed superset of JavaScript that compiles to plain JavaScript. \">TypeScript</a> source code with <a href=\"https://babeljs.io/docs/learn-es2015/#modules\" title=\"ECMAScript Modules\">Import</a> for modules</li>\n<li><code>@bevry/pluginloader</code> aliases <code>@bevry/pluginloader/edition-esnext/index.js</code></li>\n<li><code>@bevry/pluginloader/edition-esnext/index.js</code> is <a href=\"https://www.typescriptlang.org/\" title=\"TypeScript is a typed superset of JavaScript that compiles to plain JavaScript. \">TypeScript</a> compiled against <a href=\"https://en.wikipedia.org/wiki/ECMAScript#ES.Next\" title=\"ECMAScript Next\">ESNext</a> for <a href=\"https://nodejs.org\" title=\"Node.js is a JavaScript runtime built on Chrome's V8 JavaScript engine\">Node.js</a> 10 || 12 || 13 || 14 with <a href=\"https://nodejs.org/dist/latest-v5.x/docs/api/modules.html\" title=\"Node/CJS Modules\">Require</a> for modules</li>\n<li><code>@bevry/pluginloader/edition-node-esm/index.js</code> is <a href=\"https://www.typescriptlang.org/\" title=\"TypeScript is a typed superset of JavaScript that compiles to plain JavaScript. \">TypeScript</a> compiled against <a href=\"https://en.wikipedia.org/wiki/ECMAScript#ES.Next\" title=\"ECMAScript Next\">ESNext</a> for <a href=\"https://nodejs.org\" title=\"Node.js is a JavaScript runtime built on Chrome's V8 JavaScript engine\">Node.js</a> with <a href=\"https://babeljs.io/docs/learn-es2015/#modules\" title=\"ECMAScript Modules\">Import</a> for modules</li></ul>\n\n<!-- /INSTALL -->\n\n\n<!-- HISTORY/ -->\n\n<h2>History</h2>\n\n<a href=\"https://github.com/bevry/pluginloader/blob/master/HISTORY.md#files\">Discover the release history by heading on over to the <code>HISTORY.md</code> file.</a>\n\n<!-- /HISTORY -->\n\n\n<!-- CONTRIBUTE/ -->\n\n<h2>Contribute</h2>\n\n<a href=\"https://github.com/bevry/pluginloader/blob/master/CONTRIBUTING.md#files\">Discover how you can contribute by heading on over to the <code>CONTRIBUTING.md</code> file.</a>\n\n<!-- /CONTRIBUTE -->\n\n\n<!-- BACKERS/ -->\n\n<h2>Backers</h2>\n\n<h3>Maintainers</h3>\n\nThese amazing people are maintaining this project:\n\n<ul><li><a href=\"https://balupton.com\">Benjamin Lupton</a> — <a href=\"https://github.com/bevry/pluginloader/commits?author=balupton\" title=\"View the GitHub contributions of Benjamin Lupton on repository bevry/pluginloader\">view contributions</a></li></ul>\n\n<h3>Sponsors</h3>\n\nNo sponsors yet! Will you be the first?\n\n<span class=\"badge-githubsponsors\"><a href=\"https://github.com/sponsors/balupton\" title=\"Donate to this project using GitHub Sponsors\"><img src=\"https://img.shields.io/badge/github-donate-yellow.svg\" alt=\"GitHub Sponsors donate button\" /></a></span>\n<span class=\"badge-patreon\"><a href=\"https://patreon.com/bevry\" title=\"Donate to this project using Patreon\"><img src=\"https://img.shields.io/badge/patreon-donate-yellow.svg\" alt=\"Patreon donate button\" /></a></span>\n<span class=\"badge-flattr\"><a href=\"https://flattr.com/profile/balupton\" title=\"Donate to this project using Flattr\"><img src=\"https://img.shields.io/badge/flattr-donate-yellow.svg\" alt=\"Flattr donate button\" /></a></span>\n<span class=\"badge-liberapay\"><a href=\"https://liberapay.com/bevry\" title=\"Donate to this project using Liberapay\"><img src=\"https://img.shields.io/badge/liberapay-donate-yellow.svg\" alt=\"Liberapay donate button\" /></a></span>\n<span class=\"badge-buymeacoffee\"><a href=\"https://buymeacoffee.com/balupton\" title=\"Donate to this project using Buy Me A Coffee\"><img src=\"https://img.shields.io/badge/buy%20me%20a%20coffee-donate-yellow.svg\" alt=\"Buy Me A Coffee donate button\" /></a></span>\n<span class=\"badge-opencollective\"><a href=\"https://opencollective.com/bevry\" title=\"Donate to this project using Open Collective\"><img src=\"https://img.shields.io/badge/open%20collective-donate-yellow.svg\" alt=\"Open Collective donate button\" /></a></span>\n<span class=\"badge-crypto\"><a href=\"https://bevry.me/crypto\" title=\"Donate to this project using Cryptocurrency\"><img src=\"https://img.shields.io/badge/crypto-donate-yellow.svg\" alt=\"crypto donate button\" /></a></span>\n<span class=\"badge-paypal\"><a href=\"https://bevry.me/paypal\" title=\"Donate to this project using Paypal\"><img src=\"https://img.shields.io/badge/paypal-donate-yellow.svg\" alt=\"PayPal donate button\" /></a></span>\n<span class=\"badge-wishlist\"><a href=\"https://bevry.me/wishlist\" title=\"Buy an item on our wishlist for us\"><img src=\"https://img.shields.io/badge/wishlist-donate-yellow.svg\" alt=\"Wishlist browse button\" /></a></span>\n\n<h3>Contributors</h3>\n\nThese amazing people have contributed code to this project:\n\n<ul><li><a href=\"https://balupton.com\">Benjamin Lupton</a> — <a href=\"https://github.com/bevry/pluginloader/commits?author=balupton\" title=\"View the GitHub contributions of Benjamin Lupton on repository bevry/pluginloader\">view contributions</a></li></ul>\n\n<a href=\"https://github.com/bevry/pluginloader/blob/master/CONTRIBUTING.md#files\">Discover how you can contribute by heading on over to the <code>CONTRIBUTING.md</code> file.</a>\n\n<!-- /BACKERS -->\n\n\n<!-- LICENSE/ -->\n\n<h2>License</h2>\n\nUnless stated otherwise all works are:\n\n<ul><li>Copyright &copy; 2018+ <a href=\"https://balupton.com\">Benjamin Lupton</a></li></ul>\n\nand licensed under:\n\n<ul><li><a href=\"http://spdx.org/licenses/MIT.html\">MIT License</a></li></ul>\n\n<!-- /LICENSE -->\n","readmeFilename":"README.md","_id":"@bevry/pluginloader@4.10.0-next.1597385751.a1b385b5caf538ee15f5cfb68c9afe0eec1d66df","_nodeVersion":"14.8.0","_npmVersion":"6.14.7","dist":{"integrity":"sha512-otF8Q0LzFrm+WK5OJF/0p6L/TpX6gm+AHwLG3xD7aslvskCRcqWtWKO8nJbNW330haFE6Y2S7ikIORqei442dw==","shasum":"031dd60d2664801486776955548c6bb44b71c2dc","tarball":"https://registry.npmjs.org/@bevry/pluginloader/-/pluginloader-4.10.0-next.1597385751.a1b385b5caf538ee15f5cfb68c9afe0eec1d66df.tgz","fileCount":12,"unpackedSize":53251,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfNiwaCRA9TVsSAnZWagAAEBcP/3BMstmKR7bc1nX7xZpI\nuyAZRClag2zwh4soTYmgr4Yk6kGIvRe5eyix2l7wbZHpRBgLiUkBGE90hPQM\nCI0noavMJaRrHkWy+hB8wQ4FOktG8v9EwbZEgu0a/9sZPEOATUKn0X37N+Eb\nf12Q9pVzENIK+9a2lx9K5TepMb9A2YsLjjexrmg76P1FIBZXWkrA9mFqYlv4\nFHlajbFEs9IJSKueOT+t5/nucyhWbnq/7owL96W2TeWvzkKsqKHBj1/opCEV\n5hKVfD9iWnucyOE+x8Qm+0RJSIxrVzDPYES6DumWFLkj6aBD6RFsrqPH93Zb\n5vejuDa+6k0/SnR0cXD8RYn8xnni8Tv8vdVhtHADYq+c66UszM8AwtcrQbWx\nXhDc6b8T5LIXBF0Y4NcFBsGE5uiFbh4jcUZquFBEZ3ihUszfaQYD3NDhPsxg\noCoXLU/7seEs9xt8aokAzeZg72ZlExFHR5JUyqJ2g7GeGjxu+C15QkAxrZJU\nkZw/pn4IUlrhS4KYdN/jOk010QuI3tP/v+bu4yzEt2/XJSYfyTa2vVodiBMP\nab+6ffprU4m5gqbSTw4WLwEvW6BD5huc6CV/yXtttnhnrN6cxqfQ2HVtzcwR\npOIkuHGtimTM9oi1nuWSRXe8HU5nJ2eYye3g1c73z3s8HW/B9dcjhJ2HiRXn\nnAkI\r\n=XE+h\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEypOVtDL8tDFeUy3ZyAmHbSrxy/IGZnjg51NtPbbrNnAiEAwPDwS6r/Rozxc/u8zVKbU93uYnC+qB2lv/xpClqbtJE="}]},"_npmUser":{"name":"bevryme","email":"us@bevry.me"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/pluginloader_4.10.0-next.1597385751.a1b385b5caf538ee15f5cfb68c9afe0eec1d66df_1597385753574_0.22321192902200515"},"_hasShrinkwrap":false},"4.10.0":{"name":"@bevry/pluginloader","version":"4.10.0","description":"A class for loading, verifying, and creating plugins. Used by DocPad for years.","homepage":"https://github.com/bevry/pluginloader","license":"MIT","keywords":["bevry","docpad","export-default","loader","node","plugin","plugins","typed","types","typescript"],"badges":{"list":["travisci","npmversion","npmdownloads","daviddm","daviddmdev","---","githubsponsors","patreon","flattr","liberapay","buymeacoffee","opencollective","crypto","paypal","wishlist"],"config":{"githubSponsorsUsername":"balupton","buymeacoffeeUsername":"balupton","cryptoURL":"https://bevry.me/crypto","flattrUsername":"balupton","liberapayUsername":"bevry","opencollectiveUsername":"bevry","patreonUsername":"bevry","paypalURL":"https://bevry.me/paypal","wishlistURL":"https://bevry.me/wishlist","travisTLD":"com","githubUsername":"bevry","githubRepository":"pluginloader","githubSlug":"bevry/pluginloader","npmPackageName":"@bevry/pluginloader"}},"funding":"https://bevry.me/fund","author":{"name":"2018+ Benjamin Lupton","email":"b@lupton.cc","url":"https://balupton.com"},"maintainers":[{"email":"b@lupton.cc","name":"balupton"},{"email":"us@bevry.me","name":"bevryme"},{"email":"sumitrai96@gmail.com","name":"sumitrai"}],"contributors":[{"name":"Benjamin Lupton","email":"b@lupton.cc","url":"https://github.com/balupton"}],"bugs":{"url":"https://github.com/bevry/pluginloader/issues"},"repository":{"type":"git","url":"git+https://github.com/bevry/pluginloader.git"},"engines":{"node":">=10"},"editions":[{"description":"TypeScript source code with Import for modules","directory":"source","entry":"index.ts","tags":["typescript","import"],"engines":false},{"description":"TypeScript compiled against ESNext for Node.js 10 || 12 || 13 || 14 with Require for modules","directory":"edition-esnext","entry":"index.js","tags":["javascript","esnext","require"],"engines":{"node":"10 || 12 || 13 || 14"}},{"description":"TypeScript compiled against ESNext for Node.js with Import for modules","directory":"edition-node-esm","entry":"index.js","tags":["javascript","import"],"engines":{"node":true,"browsers":false}}],"types":"./compiled-types/","type":"module","main":"edition-esnext/index.js","exports":{"node":{"import":"./edition-node-esm/index.js","require":"./edition-esnext/index.js"}},"dependencies":{"errlop":"^3.15.0","semver":"^7.3.2","typechecker":"^7.13.0"},"devDependencies":{"@bevry/update-contributors":"^1.15.0","@typescript-eslint/eslint-plugin":"^3.9.0","@typescript-eslint/parser":"^3.9.0","assert-helpers":"^6.19.0","eslint":"^7.6.0","eslint-config-bevry":"^3.18.0","eslint-config-prettier":"^6.11.0","eslint-plugin-prettier":"^3.1.4","kava":"^5.10.0","make-deno-edition":"^0.15.0","prettier":"^2.0.5","projectz":"^2.13.0","surge":"^0.21.6","typedoc":"^0.18.0","typescript":"^3.9.7","valid-directory":"^3.0.0"},"scripts":{"our:clean":"rm -Rf ./docs ./edition* ./es2015 ./es5 ./out ./.next","our:compile":"npm run our:compile:deno && npm run our:compile:edition-esnext && npm run our:compile:edition-node-esm && npm run our:compile:types","our:compile:deno":"make-deno-edition --attempt","our:compile:edition-esnext":"tsc --module commonjs --target ESNext --outDir ./edition-esnext --project tsconfig.json && ( test ! -d edition-esnext/source || ( mv edition-esnext/source edition-temp && rm -Rf edition-esnext && mv edition-temp edition-esnext ) ) && echo '{\"type\": \"commonjs\"}' > edition-esnext/package.json","our:compile:edition-node-esm":"tsc --module ESNext --target ESNext --outDir ./edition-node-esm --project tsconfig.json && ( test ! -d edition-node-esm/source || ( mv edition-node-esm/source edition-temp && rm -Rf edition-node-esm && mv edition-temp edition-node-esm ) ) && echo '{\"type\": \"module\"}' > edition-node-esm/package.json","our:compile:types":"tsc --project tsconfig.json --emitDeclarationOnly --declaration --declarationMap --declarationDir ./compiled-types && ( test ! -d compiled-types/source || ( mv compiled-types/source edition-temp && rm -Rf compiled-types && mv edition-temp compiled-types ) )","our:deploy":"echo no need for this project","our:meta":"npm run our:meta:contributors && npm run our:meta:docs && npm run our:meta:projectz","our:meta:contributors":"update-contributors","our:meta:docs":"npm run our:meta:docs:typedoc","our:meta:docs:typedoc":"rm -Rf ./docs && typedoc --mode file --exclude '**/+(*test*|node_modules)' --excludeExternals --name \"$npm_package_name\" --readme ./README.md --out ./docs ./source","our:meta:projectz":"projectz compile","our:release":"npm run our:release:prepare && npm run our:release:check-changelog && npm run our:release:check-dirty && npm run our:release:tag && npm run our:release:push","our:release:check-changelog":"cat ./HISTORY.md | grep v$npm_package_version || (echo add a changelog entry for v$npm_package_version && exit -1)","our:release:check-dirty":"git diff --exit-code","our:release:prepare":"npm run our:clean && npm run our:compile && npm run our:test && npm run our:meta","our:release:push":"git push origin master && git push origin --tags","our:release:tag":"export MESSAGE=$(cat ./HISTORY.md | sed -n \"/## v$npm_package_version/,/##/p\" | sed 's/## //' | awk 'NR>1{print buf}{buf = $0}') && test \"$MESSAGE\" || (echo 'proper changelog entry not found' && exit -1) && git tag v$npm_package_version -am \"$MESSAGE\"","our:setup":"npm run our:setup:install","our:setup:install":"npm install","our:test":"npm run our:verify && npm test","our:verify":"npm run our:verify:directory && npm run our:verify:eslint && npm run our:verify:prettier","our:verify:directory":"valid-directory","our:verify:eslint":"eslint --fix --ignore-pattern '**/*.d.ts' --ignore-pattern '**/vendor/' --ignore-pattern '**/node_modules/' --ext .mjs,.js,.jsx,.ts,.tsx ./source","our:verify:prettier":"prettier --write .","test":"node ./edition-esnext/test.js"},"eslintConfig":{"extends":["bevry"]},"prettier":{"semi":false,"singleQuote":true},"gitHead":"a1b385b5caf538ee15f5cfb68c9afe0eec1d66df","_id":"@bevry/pluginloader@4.10.0","_nodeVersion":"14.8.0","_npmVersion":"6.14.7","dist":{"integrity":"sha512-KOPxTxalfSEbaDsbSJhBPAGvgkoDifwNWE3ve7UYJimTS9CMrAm8cCx0OnxqBO2q2MDlED3hT7mjFsZhnlpcvg==","shasum":"4871204ba52ee5b5a94ebd490a0fcfbfa76a7b26","tarball":"https://registry.npmjs.org/@bevry/pluginloader/-/pluginloader-4.10.0.tgz","fileCount":12,"unpackedSize":53194,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfNixmCRA9TVsSAnZWagAAZE8QAJgz7SuUs+6ElQicFh2+\nmQJaZrJvu2WQzJJjY1c4VcLTyrjyt5TU9fCM4xc4mV5HeIjBtF/bgrEa1V2B\nFydge+opsca7GbT4DntdexItUSuOOUVpkVkRRh4E8Mcc6aYVipMOf0X01f/K\nwshNVLlN6zYnCPl+iIwNLiEEkUgTaVS2iLR7SEQVw+8p6qxTqnuthyBAwWaI\no6t0SyzJ8NW6KYfCTPGiA5ifNzswgYncOGAECTOFUF+fu9X08HPG4fp+5mvc\n/7XoW1AJOiGHUZYcpWqo1B6MiHDH7olMYqGUcdOj41vxgXloJfORQjIZz3Ng\nvaHCKFlUrDfxvkZPzmdDylWCzhqjarJwBbB/b7X2FDEUo37LKMmmEOP2N5mT\nXmFZ60rgQPwwMFXvAIxbHfxAXmLFOUB9dtY+9bTzsRpMqD/Ia4fXTUf9cRSa\n6O2NtKb8t9/7c5UjnQB5LrPSaukyYDNNVfaFGGOPRclu33nJ+KeyiBzisxfN\n1SCMFP8lkG3pYBXs8Nhy3GyryYsJz2MJ7GuPkrgw3Ad7h5s8rqbhgnLtKdYb\nONCiwMrG4Oulxc3xkuV4x5GXF9XDd0+FCumY/2a/Re/3zisKVFNZXFBOTvnS\ngg6qyQkkvG0zZlZ0FtxqbRXvbQt6YupNu8EUBPf8vH2coj3M/30y9fCNMdaY\nsxuJ\r\n=xfa1\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCaIxLmVeVFCDWzPLOsaWFlziTkqL2Rh/J7n4VyhBxTiwIhAMoAbYLM2W/ugwdeqeFIoqB+CgIYTA5md4MdBuuJ9lrh"}]},"_npmUser":{"name":"bevryme","email":"us@bevry.me"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/pluginloader_4.10.0_1597385830465_0.18159799173488334"},"_hasShrinkwrap":false},"4.11.0-next.1597700324.84e7b1d7d022ab68c4c8c9d7fd12b41392b52df6":{"name":"@bevry/pluginloader","version":"4.11.0-next.1597700324.84e7b1d7d022ab68c4c8c9d7fd12b41392b52df6","description":"A class for loading, verifying, and creating plugins. Used by DocPad for years.","homepage":"https://github.com/bevry/pluginloader","license":"MIT","keywords":["bevry","docpad","export-default","loader","node","plugin","plugins","typed","types","typescript"],"badges":{"list":["travisci","npmversion","npmdownloads","daviddm","daviddmdev","---","githubsponsors","patreon","flattr","liberapay","buymeacoffee","opencollective","crypto","paypal","wishlist"],"config":{"githubSponsorsUsername":"balupton","buymeacoffeeUsername":"balupton","cryptoURL":"https://bevry.me/crypto","flattrUsername":"balupton","liberapayUsername":"bevry","opencollectiveUsername":"bevry","patreonUsername":"bevry","paypalURL":"https://bevry.me/paypal","wishlistURL":"https://bevry.me/wishlist","travisTLD":"com","githubUsername":"bevry","githubRepository":"pluginloader","githubSlug":"bevry/pluginloader","npmPackageName":"@bevry/pluginloader"}},"funding":"https://bevry.me/fund","author":{"name":"2018+ Benjamin Lupton","email":"b@lupton.cc","url":"https://balupton.com"},"maintainers":[{"email":"b@lupton.cc","name":"balupton"},{"email":"us@bevry.me","name":"bevryme"},{"email":"sumitrai96@gmail.com","name":"sumitrai"}],"contributors":[{"name":"Benjamin Lupton","email":"b@lupton.cc","url":"https://github.com/balupton"}],"bugs":{"url":"https://github.com/bevry/pluginloader/issues"},"repository":{"type":"git","url":"git+https://github.com/bevry/pluginloader.git"},"engines":{"node":">=10"},"editions":[{"description":"TypeScript source code with Import for modules","directory":"source","entry":"index.ts","tags":["typescript","import"],"engines":false},{"description":"TypeScript compiled against ESNext for Node.js 10 || 12 || 13 || 14 with Require for modules","directory":"edition-esnext","entry":"index.js","tags":["javascript","esnext","require"],"engines":{"node":"10 || 12 || 13 || 14"}},{"description":"TypeScript compiled against ESNext for Node.js with Import for modules","directory":"edition-node-esm","entry":"index.js","tags":["javascript","import"],"engines":{"node":true,"browsers":false}}],"types":"./compiled-types/","type":"module","main":"edition-esnext/index.js","exports":{"node":{"import":"./edition-node-esm/index.js","require":"./edition-esnext/index.js"}},"dependencies":{"errlop":"^3.16.0","semver":"^7.3.2","typechecker":"^7.13.0"},"devDependencies":{"@bevry/update-contributors":"^1.15.0","@typescript-eslint/eslint-plugin":"^3.9.1","@typescript-eslint/parser":"^3.9.1","assert-helpers":"^6.19.0","eslint":"^7.7.0","eslint-config-bevry":"^3.19.0","eslint-config-prettier":"^6.11.0","eslint-plugin-prettier":"^3.1.4","kava":"^5.11.0","make-deno-edition":"^1.0.0","prettier":"^2.0.5","projectz":"^2.14.0","surge":"^0.21.6","typedoc":"^0.18.0","typescript":"^3.9.7","valid-directory":"^3.0.0"},"scripts":{"our:clean":"rm -Rf ./docs ./edition* ./es2015 ./es5 ./out ./.next","our:compile":"npm run our:compile:deno && npm run our:compile:edition-esnext && npm run our:compile:edition-node-esm && npm run our:compile:types","our:compile:deno":"make-deno-edition --attempt","our:compile:edition-esnext":"tsc --module commonjs --target ESNext --outDir ./edition-esnext --project tsconfig.json && ( test ! -d edition-esnext/source || ( mv edition-esnext/source edition-temp && rm -Rf edition-esnext && mv edition-temp edition-esnext ) ) && echo '{\"type\": \"commonjs\"}' > edition-esnext/package.json","our:compile:edition-node-esm":"tsc --module ESNext --target ESNext --outDir ./edition-node-esm --project tsconfig.json && ( test ! -d edition-node-esm/source || ( mv edition-node-esm/source edition-temp && rm -Rf edition-node-esm && mv edition-temp edition-node-esm ) ) && echo '{\"type\": \"module\"}' > edition-node-esm/package.json","our:compile:types":"tsc --project tsconfig.json --emitDeclarationOnly --declaration --declarationMap --declarationDir ./compiled-types && ( test ! -d compiled-types/source || ( mv compiled-types/source edition-temp && rm -Rf compiled-types && mv edition-temp compiled-types ) )","our:deploy":"echo no need for this project","our:meta":"npm run our:meta:contributors && npm run our:meta:docs && npm run our:meta:projectz","our:meta:contributors":"update-contributors","our:meta:docs":"npm run our:meta:docs:typedoc","our:meta:docs:typedoc":"rm -Rf ./docs && typedoc --mode file --exclude '**/+(*test*|node_modules)' --excludeExternals --name \"$npm_package_name\" --readme ./README.md --out ./docs ./source","our:meta:projectz":"projectz compile","our:release":"npm run our:release:prepare && npm run our:release:check-changelog && npm run our:release:check-dirty && npm run our:release:tag && npm run our:release:push","our:release:check-changelog":"cat ./HISTORY.md | grep v$npm_package_version || (echo add a changelog entry for v$npm_package_version && exit -1)","our:release:check-dirty":"git diff --exit-code","our:release:prepare":"npm run our:clean && npm run our:compile && npm run our:test && npm run our:meta","our:release:push":"git push origin master && git push origin --tags","our:release:tag":"export MESSAGE=$(cat ./HISTORY.md | sed -n \"/## v$npm_package_version/,/##/p\" | sed 's/## //' | awk 'NR>1{print buf}{buf = $0}') && test \"$MESSAGE\" || (echo 'proper changelog entry not found' && exit -1) && git tag v$npm_package_version -am \"$MESSAGE\"","our:setup":"npm run our:setup:install","our:setup:install":"npm install","our:test":"npm run our:verify && npm test","our:verify":"npm run our:verify:directory && npm run our:verify:eslint && npm run our:verify:prettier","our:verify:directory":"valid-directory","our:verify:eslint":"eslint --fix --ignore-pattern '**/*.d.ts' --ignore-pattern '**/vendor/' --ignore-pattern '**/node_modules/' --ext .mjs,.js,.jsx,.ts,.tsx ./source","our:verify:prettier":"prettier --write .","test":"node ./edition-esnext/test.js"},"eslintConfig":{"extends":["bevry"]},"prettier":{"semi":false,"singleQuote":true},"gitHead":"84e7b1d7d022ab68c4c8c9d7fd12b41392b52df6","readme":"<!-- TITLE/ -->\n\n<h1>@bevry/pluginloader</h1>\n\n<!-- /TITLE -->\n\n\n<!-- BADGES/ -->\n\n<span class=\"badge-travisci\"><a href=\"http://travis-ci.com/bevry/pluginloader\" title=\"Check this project's build status on TravisCI\"><img src=\"https://img.shields.io/travis/com/bevry/pluginloader/master.svg\" alt=\"Travis CI Build Status\" /></a></span>\n<span class=\"badge-npmversion\"><a href=\"https://npmjs.org/package/@bevry/pluginloader\" title=\"View this project on NPM\"><img src=\"https://img.shields.io/npm/v/@bevry/pluginloader.svg\" alt=\"NPM version\" /></a></span>\n<span class=\"badge-npmdownloads\"><a href=\"https://npmjs.org/package/@bevry/pluginloader\" title=\"View this project on NPM\"><img src=\"https://img.shields.io/npm/dm/@bevry/pluginloader.svg\" alt=\"NPM downloads\" /></a></span>\n<span class=\"badge-daviddm\"><a href=\"https://david-dm.org/bevry/pluginloader\" title=\"View the status of this project's dependencies on DavidDM\"><img src=\"https://img.shields.io/david/bevry/pluginloader.svg\" alt=\"Dependency Status\" /></a></span>\n<span class=\"badge-daviddmdev\"><a href=\"https://david-dm.org/bevry/pluginloader#info=devDependencies\" title=\"View the status of this project's development dependencies on DavidDM\"><img src=\"https://img.shields.io/david/dev/bevry/pluginloader.svg\" alt=\"Dev Dependency Status\" /></a></span>\n<br class=\"badge-separator\" />\n<span class=\"badge-githubsponsors\"><a href=\"https://github.com/sponsors/balupton\" title=\"Donate to this project using GitHub Sponsors\"><img src=\"https://img.shields.io/badge/github-donate-yellow.svg\" alt=\"GitHub Sponsors donate button\" /></a></span>\n<span class=\"badge-patreon\"><a href=\"https://patreon.com/bevry\" title=\"Donate to this project using Patreon\"><img src=\"https://img.shields.io/badge/patreon-donate-yellow.svg\" alt=\"Patreon donate button\" /></a></span>\n<span class=\"badge-flattr\"><a href=\"https://flattr.com/profile/balupton\" title=\"Donate to this project using Flattr\"><img src=\"https://img.shields.io/badge/flattr-donate-yellow.svg\" alt=\"Flattr donate button\" /></a></span>\n<span class=\"badge-liberapay\"><a href=\"https://liberapay.com/bevry\" title=\"Donate to this project using Liberapay\"><img src=\"https://img.shields.io/badge/liberapay-donate-yellow.svg\" alt=\"Liberapay donate button\" /></a></span>\n<span class=\"badge-buymeacoffee\"><a href=\"https://buymeacoffee.com/balupton\" title=\"Donate to this project using Buy Me A Coffee\"><img src=\"https://img.shields.io/badge/buy%20me%20a%20coffee-donate-yellow.svg\" alt=\"Buy Me A Coffee donate button\" /></a></span>\n<span class=\"badge-opencollective\"><a href=\"https://opencollective.com/bevry\" title=\"Donate to this project using Open Collective\"><img src=\"https://img.shields.io/badge/open%20collective-donate-yellow.svg\" alt=\"Open Collective donate button\" /></a></span>\n<span class=\"badge-crypto\"><a href=\"https://bevry.me/crypto\" title=\"Donate to this project using Cryptocurrency\"><img src=\"https://img.shields.io/badge/crypto-donate-yellow.svg\" alt=\"crypto donate button\" /></a></span>\n<span class=\"badge-paypal\"><a href=\"https://bevry.me/paypal\" title=\"Donate to this project using Paypal\"><img src=\"https://img.shields.io/badge/paypal-donate-yellow.svg\" alt=\"PayPal donate button\" /></a></span>\n<span class=\"badge-wishlist\"><a href=\"https://bevry.me/wishlist\" title=\"Buy an item on our wishlist for us\"><img src=\"https://img.shields.io/badge/wishlist-donate-yellow.svg\" alt=\"Wishlist browse button\" /></a></span>\n\n<!-- /BADGES -->\n\n\n<!-- DESCRIPTION/ -->\n\nA class for loading, verifying, and creating plugins. Used by DocPad for years.\n\n<!-- /DESCRIPTION -->\n\n\n## Usage\n\n[Complete API Documentation.](http://master.pluginloader.bevry.surge.sh/docs/globals.html)\n\n### Basics\n\nCreate your project:\n\n1. `mkdir my-project`\n1. `cd my-project`\n\nCreate your plugin:\n\n1. `mkdir myplugin`\n1. `cd myplugin`\n1. `npm init`\n1. `index.js` to:\n\n    ```javascript\n    module.exports = function (BasePlugin) {\n        return class MyPlugin extends BasePlugin {\n            constructor(...args) {\n                super(...args)\n                console.log('hello from my plugin')\n            }\n        }\n    }\n    ```\n\n1. `cd ..`\n\nCreate your plugin loader:\n\n1. `mkdir myapp`\n1. `cd myapp`\n1. `npm init`\n1. `index.js` to:\n\n    ```javascript\n    import PluginLoader from '@bevry/pluginloader'\n\n    class BasePlugin {\n        constructor() {\n            console.log('hello from base plugin')\n        }\n    }\n\n    const pluginLoader = new PluginLoader({\n        BasePlugin,\n        pluginPath: require('path').resolve(__dirname, '..', 'myplugin'),\n    })\n    ```\n\n1. `cd ..`\n\nRun the project:\n\n1. `node myapp/index.js`\n\n### Ecosystem\n\n-   [pluginclerk](https://github.com/bevry/pluginclerk) a project for fetching compatible plugins from the npm registry\n-   [docpad-baseplugin](https://github.com/docpad/docpad-baseplugin) the BasePlugin class that DocPad uses\n-   [docpad-plugintester](https://github.com/docpad/docpad-plugintester) testing helpers for DocPad plugins\n\n<!-- INSTALL/ -->\n\n<h2>Install</h2>\n\n<a href=\"https://npmjs.com\" title=\"npm is a package manager for javascript\"><h3>npm</h3></a>\n<ul>\n<li>Install: <code>npm install --save @bevry/pluginloader</code></li>\n<li>Import: <code>import pkg from ('@bevry/pluginloader')</code></li>\n<li>Require: <code>const pkg = require('@bevry/pluginloader').default</code></li>\n</ul>\n\n<h3><a href=\"https://editions.bevry.me\" title=\"Editions are the best way to produce and consume packages you care about.\">Editions</a></h3>\n\n<p>This package is published with the following editions:</p>\n\n<ul><li><code>@bevry/pluginloader/source/index.ts</code> is <a href=\"https://www.typescriptlang.org/\" title=\"TypeScript is a typed superset of JavaScript that compiles to plain JavaScript. \">TypeScript</a> source code with <a href=\"https://babeljs.io/docs/learn-es2015/#modules\" title=\"ECMAScript Modules\">Import</a> for modules</li>\n<li><code>@bevry/pluginloader</code> aliases <code>@bevry/pluginloader/edition-esnext/index.js</code></li>\n<li><code>@bevry/pluginloader/edition-esnext/index.js</code> is <a href=\"https://www.typescriptlang.org/\" title=\"TypeScript is a typed superset of JavaScript that compiles to plain JavaScript. \">TypeScript</a> compiled against <a href=\"https://en.wikipedia.org/wiki/ECMAScript#ES.Next\" title=\"ECMAScript Next\">ESNext</a> for <a href=\"https://nodejs.org\" title=\"Node.js is a JavaScript runtime built on Chrome's V8 JavaScript engine\">Node.js</a> 10 || 12 || 13 || 14 with <a href=\"https://nodejs.org/dist/latest-v5.x/docs/api/modules.html\" title=\"Node/CJS Modules\">Require</a> for modules</li>\n<li><code>@bevry/pluginloader/edition-node-esm/index.js</code> is <a href=\"https://www.typescriptlang.org/\" title=\"TypeScript is a typed superset of JavaScript that compiles to plain JavaScript. \">TypeScript</a> compiled against <a href=\"https://en.wikipedia.org/wiki/ECMAScript#ES.Next\" title=\"ECMAScript Next\">ESNext</a> for <a href=\"https://nodejs.org\" title=\"Node.js is a JavaScript runtime built on Chrome's V8 JavaScript engine\">Node.js</a> with <a href=\"https://babeljs.io/docs/learn-es2015/#modules\" title=\"ECMAScript Modules\">Import</a> for modules</li></ul>\n\n<!-- /INSTALL -->\n\n\n<!-- HISTORY/ -->\n\n<h2>History</h2>\n\n<a href=\"https://github.com/bevry/pluginloader/blob/master/HISTORY.md#files\">Discover the release history by heading on over to the <code>HISTORY.md</code> file.</a>\n\n<!-- /HISTORY -->\n\n\n<!-- CONTRIBUTE/ -->\n\n<h2>Contribute</h2>\n\n<a href=\"https://github.com/bevry/pluginloader/blob/master/CONTRIBUTING.md#files\">Discover how you can contribute by heading on over to the <code>CONTRIBUTING.md</code> file.</a>\n\n<!-- /CONTRIBUTE -->\n\n\n<!-- BACKERS/ -->\n\n<h2>Backers</h2>\n\n<h3>Maintainers</h3>\n\nThese amazing people are maintaining this project:\n\n<ul><li><a href=\"https://balupton.com\">Benjamin Lupton</a> — <a href=\"https://github.com/bevry/pluginloader/commits?author=balupton\" title=\"View the GitHub contributions of Benjamin Lupton on repository bevry/pluginloader\">view contributions</a></li></ul>\n\n<h3>Sponsors</h3>\n\nNo sponsors yet! Will you be the first?\n\n<span class=\"badge-githubsponsors\"><a href=\"https://github.com/sponsors/balupton\" title=\"Donate to this project using GitHub Sponsors\"><img src=\"https://img.shields.io/badge/github-donate-yellow.svg\" alt=\"GitHub Sponsors donate button\" /></a></span>\n<span class=\"badge-patreon\"><a href=\"https://patreon.com/bevry\" title=\"Donate to this project using Patreon\"><img src=\"https://img.shields.io/badge/patreon-donate-yellow.svg\" alt=\"Patreon donate button\" /></a></span>\n<span class=\"badge-flattr\"><a href=\"https://flattr.com/profile/balupton\" title=\"Donate to this project using Flattr\"><img src=\"https://img.shields.io/badge/flattr-donate-yellow.svg\" alt=\"Flattr donate button\" /></a></span>\n<span class=\"badge-liberapay\"><a href=\"https://liberapay.com/bevry\" title=\"Donate to this project using Liberapay\"><img src=\"https://img.shields.io/badge/liberapay-donate-yellow.svg\" alt=\"Liberapay donate button\" /></a></span>\n<span class=\"badge-buymeacoffee\"><a href=\"https://buymeacoffee.com/balupton\" title=\"Donate to this project using Buy Me A Coffee\"><img src=\"https://img.shields.io/badge/buy%20me%20a%20coffee-donate-yellow.svg\" alt=\"Buy Me A Coffee donate button\" /></a></span>\n<span class=\"badge-opencollective\"><a href=\"https://opencollective.com/bevry\" title=\"Donate to this project using Open Collective\"><img src=\"https://img.shields.io/badge/open%20collective-donate-yellow.svg\" alt=\"Open Collective donate button\" /></a></span>\n<span class=\"badge-crypto\"><a href=\"https://bevry.me/crypto\" title=\"Donate to this project using Cryptocurrency\"><img src=\"https://img.shields.io/badge/crypto-donate-yellow.svg\" alt=\"crypto donate button\" /></a></span>\n<span class=\"badge-paypal\"><a href=\"https://bevry.me/paypal\" title=\"Donate to this project using Paypal\"><img src=\"https://img.shields.io/badge/paypal-donate-yellow.svg\" alt=\"PayPal donate button\" /></a></span>\n<span class=\"badge-wishlist\"><a href=\"https://bevry.me/wishlist\" title=\"Buy an item on our wishlist for us\"><img src=\"https://img.shields.io/badge/wishlist-donate-yellow.svg\" alt=\"Wishlist browse button\" /></a></span>\n\n<h3>Contributors</h3>\n\nThese amazing people have contributed code to this project:\n\n<ul><li><a href=\"https://balupton.com\">Benjamin Lupton</a> — <a href=\"https://github.com/bevry/pluginloader/commits?author=balupton\" title=\"View the GitHub contributions of Benjamin Lupton on repository bevry/pluginloader\">view contributions</a></li></ul>\n\n<a href=\"https://github.com/bevry/pluginloader/blob/master/CONTRIBUTING.md#files\">Discover how you can contribute by heading on over to the <code>CONTRIBUTING.md</code> file.</a>\n\n<!-- /BACKERS -->\n\n\n<!-- LICENSE/ -->\n\n<h2>License</h2>\n\nUnless stated otherwise all works are:\n\n<ul><li>Copyright &copy; 2018+ <a href=\"https://balupton.com\">Benjamin Lupton</a></li></ul>\n\nand licensed under:\n\n<ul><li><a href=\"http://spdx.org/licenses/MIT.html\">MIT License</a></li></ul>\n\n<!-- /LICENSE -->\n","readmeFilename":"README.md","_id":"@bevry/pluginloader@4.11.0-next.1597700324.84e7b1d7d022ab68c4c8c9d7fd12b41392b52df6","_nodeVersion":"14.8.0","_npmVersion":"6.14.7","dist":{"integrity":"sha512-5BSjPsxGjDHW8SKkVmSpo+6zW0/Bp+UOiXCaIntII8jZ8cf9uNLmvvM62cTYwD8CA2gjZUkaafBfddWszgkU7w==","shasum":"5c19566d5535ffe56d67682836ca11c6ddab5621","tarball":"https://registry.npmjs.org/@bevry/pluginloader/-/pluginloader-4.11.0-next.1597700324.84e7b1d7d022ab68c4c8c9d7fd12b41392b52df6.tgz","fileCount":13,"unpackedSize":53684,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfOvjnCRA9TVsSAnZWagAAoeQP/Rp2HzZbTQ1em5MNR2mm\nBrwnzT9d75KYw58yHJCnGgtEocYkWqxr897aoE7Q7XaOQVOXpeNt7u0sjFNc\n2LX6AG2MJzRQmQX4DDOsHy79ltzoPTGvlp6H50wKm9JSc12QgIfX0PceSp7z\n0ckyfOao36c+SqN60a8NYNtYH0iZrH8C+cMFnqN25gIyTNZpKLm1IyKUHa4q\nlHfBi3Ah0MQZB7zOps6LS6NFQEbg5GldSmj0DVjYimJprTD/MKBX3NmqgIDd\nSwE48LDmEl3FAnJmejNfgqnSO6VgfGf/wFdGLOa3OuCnNoTMm7rJlSuEs67+\n4W9j7T4NesoUw3i9fHeGzbBPdUXkA+cexN6N76pgfYOk2L1A/hcjkT497HM8\nL8QmXTRjGlrG/I//UHdsFwxYc1I8dppciUqc3tssbdwsmOF/jXg/HTWkqC0l\nEd7bH8i6GLZ8P5vQQCqrCPYPboihJZxOYXgH7vNntWJlkvtDvSH1UBfPcVJN\n/VHPn92zTAffTuyHb0Rt83SDQdlRExB7KYvshCBsFpuKj43wpXG2uwaCK7x3\n5KaHZm17b1jTGpgsVsiWQtQW+MFV3cIB5wP20HlKPte2K4GaZY7kaZzvxYG3\nrkZb0cgvTyXz8JqG+hYnueaA0JOlWZBD0bbQxeC72gyz4Lb5TxAdknizfvxF\nWTIU\r\n=12bu\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIAqoIF7zAw6aoXvYKJBOAWcwS97jpS8r7+nZCEjFbBdKAiA0IntQMPm9AqGMmv4xQQuLYqpPpQQMlc/jncmUfh+VXA=="}]},"_npmUser":{"name":"bevryme","email":"us@bevry.me"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/pluginloader_4.11.0-next.1597700324.84e7b1d7d022ab68c4c8c9d7fd12b41392b52df6_1597700326577_0.4351205786006038"},"_hasShrinkwrap":false},"4.11.0-next.1597700407.c6eb071671da4b8ab0a46dd5e136f9fa675c714b":{"name":"@bevry/pluginloader","version":"4.11.0-next.1597700407.c6eb071671da4b8ab0a46dd5e136f9fa675c714b","description":"A class for loading, verifying, and creating plugins. Used by DocPad for years.","homepage":"https://github.com/bevry/pluginloader","license":"MIT","keywords":["bevry","docpad","export-default","loader","node","plugin","plugins","typed","types","typescript"],"badges":{"list":["travisci","npmversion","npmdownloads","daviddm","daviddmdev","---","githubsponsors","patreon","flattr","liberapay","buymeacoffee","opencollective","crypto","paypal","wishlist"],"config":{"githubSponsorsUsername":"balupton","buymeacoffeeUsername":"balupton","cryptoURL":"https://bevry.me/crypto","flattrUsername":"balupton","liberapayUsername":"bevry","opencollectiveUsername":"bevry","patreonUsername":"bevry","paypalURL":"https://bevry.me/paypal","wishlistURL":"https://bevry.me/wishlist","travisTLD":"com","githubUsername":"bevry","githubRepository":"pluginloader","githubSlug":"bevry/pluginloader","npmPackageName":"@bevry/pluginloader"}},"funding":"https://bevry.me/fund","author":{"name":"2018+ Benjamin Lupton","email":"b@lupton.cc","url":"https://balupton.com"},"maintainers":[{"email":"b@lupton.cc","name":"balupton"},{"email":"us@bevry.me","name":"bevryme"},{"email":"sumitrai96@gmail.com","name":"sumitrai"}],"contributors":[{"name":"Benjamin Lupton","email":"b@lupton.cc","url":"https://github.com/balupton"}],"bugs":{"url":"https://github.com/bevry/pluginloader/issues"},"repository":{"type":"git","url":"git+https://github.com/bevry/pluginloader.git"},"engines":{"node":">=10"},"editions":[{"description":"TypeScript source code with Import for modules","directory":"source","entry":"index.ts","tags":["typescript","import"],"engines":false},{"description":"TypeScript compiled against ESNext for Node.js 10 || 12 || 13 || 14 with Require for modules","directory":"edition-esnext","entry":"index.js","tags":["javascript","esnext","require"],"engines":{"node":"10 || 12 || 13 || 14"}},{"description":"TypeScript compiled against ESNext for Node.js with Import for modules","directory":"edition-node-esm","entry":"index.js","tags":["javascript","import"],"engines":{"node":true,"browsers":false}}],"types":"./compiled-types/","type":"module","main":"edition-esnext/index.js","exports":{"node":{"import":"./edition-node-esm/index.js","require":"./edition-esnext/index.js"}},"dependencies":{"errlop":"^3.16.0","semver":"^7.3.2","typechecker":"^7.13.0"},"devDependencies":{"@bevry/update-contributors":"^1.15.0","@typescript-eslint/eslint-plugin":"^3.9.1","@typescript-eslint/parser":"^3.9.1","assert-helpers":"^6.19.0","eslint":"^7.7.0","eslint-config-bevry":"^3.19.0","eslint-config-prettier":"^6.11.0","eslint-plugin-prettier":"^3.1.4","kava":"^5.11.0","make-deno-edition":"^1.0.0","prettier":"^2.0.5","projectz":"^2.14.0","surge":"^0.21.6","typedoc":"^0.18.0","typescript":"^3.9.7","valid-directory":"^3.0.0"},"scripts":{"our:clean":"rm -Rf ./docs ./edition* ./es2015 ./es5 ./out ./.next","our:compile":"npm run our:compile:deno && npm run our:compile:edition-esnext && npm run our:compile:edition-node-esm && npm run our:compile:types","our:compile:deno":"make-deno-edition --attempt","our:compile:edition-esnext":"tsc --module commonjs --target ESNext --outDir ./edition-esnext --project tsconfig.json && ( test ! -d edition-esnext/source || ( mv edition-esnext/source edition-temp && rm -Rf edition-esnext && mv edition-temp edition-esnext ) ) && echo '{\"type\": \"commonjs\"}' > edition-esnext/package.json","our:compile:edition-node-esm":"tsc --module ESNext --target ESNext --outDir ./edition-node-esm --project tsconfig.json && ( test ! -d edition-node-esm/source || ( mv edition-node-esm/source edition-temp && rm -Rf edition-node-esm && mv edition-temp edition-node-esm ) ) && echo '{\"type\": \"module\"}' > edition-node-esm/package.json","our:compile:types":"tsc --project tsconfig.json --emitDeclarationOnly --declaration --declarationMap --declarationDir ./compiled-types && ( test ! -d compiled-types/source || ( mv compiled-types/source edition-temp && rm -Rf compiled-types && mv edition-temp compiled-types ) )","our:deploy":"echo no need for this project","our:meta":"npm run our:meta:contributors && npm run our:meta:docs && npm run our:meta:projectz","our:meta:contributors":"update-contributors","our:meta:docs":"npm run our:meta:docs:typedoc","our:meta:docs:typedoc":"rm -Rf ./docs && typedoc --mode file --exclude '**/+(*test*|node_modules)' --excludeExternals --name \"$npm_package_name\" --readme ./README.md --out ./docs ./source","our:meta:projectz":"projectz compile","our:release":"npm run our:release:prepare && npm run our:release:check-changelog && npm run our:release:check-dirty && npm run our:release:tag && npm run our:release:push","our:release:check-changelog":"cat ./HISTORY.md | grep v$npm_package_version || (echo add a changelog entry for v$npm_package_version && exit -1)","our:release:check-dirty":"git diff --exit-code","our:release:prepare":"npm run our:clean && npm run our:compile && npm run our:test && npm run our:meta","our:release:push":"git push origin master && git push origin --tags","our:release:tag":"export MESSAGE=$(cat ./HISTORY.md | sed -n \"/## v$npm_package_version/,/##/p\" | sed 's/## //' | awk 'NR>1{print buf}{buf = $0}') && test \"$MESSAGE\" || (echo 'proper changelog entry not found' && exit -1) && git tag v$npm_package_version -am \"$MESSAGE\"","our:setup":"npm run our:setup:install","our:setup:install":"npm install","our:test":"npm run our:verify && npm test","our:verify":"npm run our:verify:directory && npm run our:verify:eslint && npm run our:verify:prettier","our:verify:directory":"valid-directory","our:verify:eslint":"eslint --fix --ignore-pattern '**/*.d.ts' --ignore-pattern '**/vendor/' --ignore-pattern '**/node_modules/' --ext .mjs,.js,.jsx,.ts,.tsx ./source","our:verify:prettier":"prettier --write .","test":"node ./edition-esnext/test.js"},"eslintConfig":{"extends":["bevry"]},"prettier":{"semi":false,"singleQuote":true},"gitHead":"c6eb071671da4b8ab0a46dd5e136f9fa675c714b","readme":"<!-- TITLE/ -->\n\n<h1>@bevry/pluginloader</h1>\n\n<!-- /TITLE -->\n\n\n<!-- BADGES/ -->\n\n<span class=\"badge-travisci\"><a href=\"http://travis-ci.com/bevry/pluginloader\" title=\"Check this project's build status on TravisCI\"><img src=\"https://img.shields.io/travis/com/bevry/pluginloader/master.svg\" alt=\"Travis CI Build Status\" /></a></span>\n<span class=\"badge-npmversion\"><a href=\"https://npmjs.org/package/@bevry/pluginloader\" title=\"View this project on NPM\"><img src=\"https://img.shields.io/npm/v/@bevry/pluginloader.svg\" alt=\"NPM version\" /></a></span>\n<span class=\"badge-npmdownloads\"><a href=\"https://npmjs.org/package/@bevry/pluginloader\" title=\"View this project on NPM\"><img src=\"https://img.shields.io/npm/dm/@bevry/pluginloader.svg\" alt=\"NPM downloads\" /></a></span>\n<span class=\"badge-daviddm\"><a href=\"https://david-dm.org/bevry/pluginloader\" title=\"View the status of this project's dependencies on DavidDM\"><img src=\"https://img.shields.io/david/bevry/pluginloader.svg\" alt=\"Dependency Status\" /></a></span>\n<span class=\"badge-daviddmdev\"><a href=\"https://david-dm.org/bevry/pluginloader#info=devDependencies\" title=\"View the status of this project's development dependencies on DavidDM\"><img src=\"https://img.shields.io/david/dev/bevry/pluginloader.svg\" alt=\"Dev Dependency Status\" /></a></span>\n<br class=\"badge-separator\" />\n<span class=\"badge-githubsponsors\"><a href=\"https://github.com/sponsors/balupton\" title=\"Donate to this project using GitHub Sponsors\"><img src=\"https://img.shields.io/badge/github-donate-yellow.svg\" alt=\"GitHub Sponsors donate button\" /></a></span>\n<span class=\"badge-patreon\"><a href=\"https://patreon.com/bevry\" title=\"Donate to this project using Patreon\"><img src=\"https://img.shields.io/badge/patreon-donate-yellow.svg\" alt=\"Patreon donate button\" /></a></span>\n<span class=\"badge-flattr\"><a href=\"https://flattr.com/profile/balupton\" title=\"Donate to this project using Flattr\"><img src=\"https://img.shields.io/badge/flattr-donate-yellow.svg\" alt=\"Flattr donate button\" /></a></span>\n<span class=\"badge-liberapay\"><a href=\"https://liberapay.com/bevry\" title=\"Donate to this project using Liberapay\"><img src=\"https://img.shields.io/badge/liberapay-donate-yellow.svg\" alt=\"Liberapay donate button\" /></a></span>\n<span class=\"badge-buymeacoffee\"><a href=\"https://buymeacoffee.com/balupton\" title=\"Donate to this project using Buy Me A Coffee\"><img src=\"https://img.shields.io/badge/buy%20me%20a%20coffee-donate-yellow.svg\" alt=\"Buy Me A Coffee donate button\" /></a></span>\n<span class=\"badge-opencollective\"><a href=\"https://opencollective.com/bevry\" title=\"Donate to this project using Open Collective\"><img src=\"https://img.shields.io/badge/open%20collective-donate-yellow.svg\" alt=\"Open Collective donate button\" /></a></span>\n<span class=\"badge-crypto\"><a href=\"https://bevry.me/crypto\" title=\"Donate to this project using Cryptocurrency\"><img src=\"https://img.shields.io/badge/crypto-donate-yellow.svg\" alt=\"crypto donate button\" /></a></span>\n<span class=\"badge-paypal\"><a href=\"https://bevry.me/paypal\" title=\"Donate to this project using Paypal\"><img src=\"https://img.shields.io/badge/paypal-donate-yellow.svg\" alt=\"PayPal donate button\" /></a></span>\n<span class=\"badge-wishlist\"><a href=\"https://bevry.me/wishlist\" title=\"Buy an item on our wishlist for us\"><img src=\"https://img.shields.io/badge/wishlist-donate-yellow.svg\" alt=\"Wishlist browse button\" /></a></span>\n\n<!-- /BADGES -->\n\n\n<!-- DESCRIPTION/ -->\n\nA class for loading, verifying, and creating plugins. Used by DocPad for years.\n\n<!-- /DESCRIPTION -->\n\n\n## Usage\n\n[Complete API Documentation.](http://master.pluginloader.bevry.surge.sh/docs/globals.html)\n\n### Basics\n\nCreate your project:\n\n1. `mkdir my-project`\n1. `cd my-project`\n\nCreate your plugin:\n\n1. `mkdir myplugin`\n1. `cd myplugin`\n1. `npm init`\n1. `index.js` to:\n\n    ```javascript\n    module.exports = function (BasePlugin) {\n        return class MyPlugin extends BasePlugin {\n            constructor(...args) {\n                super(...args)\n                console.log('hello from my plugin')\n            }\n        }\n    }\n    ```\n\n1. `cd ..`\n\nCreate your plugin loader:\n\n1. `mkdir myapp`\n1. `cd myapp`\n1. `npm init`\n1. `index.js` to:\n\n    ```javascript\n    import PluginLoader from '@bevry/pluginloader'\n\n    class BasePlugin {\n        constructor() {\n            console.log('hello from base plugin')\n        }\n    }\n\n    const pluginLoader = new PluginLoader({\n        BasePlugin,\n        pluginPath: require('path').resolve(__dirname, '..', 'myplugin'),\n    })\n    ```\n\n1. `cd ..`\n\nRun the project:\n\n1. `node myapp/index.js`\n\n### Ecosystem\n\n-   [pluginclerk](https://github.com/bevry/pluginclerk) a project for fetching compatible plugins from the npm registry\n-   [docpad-baseplugin](https://github.com/docpad/docpad-baseplugin) the BasePlugin class that DocPad uses\n-   [docpad-plugintester](https://github.com/docpad/docpad-plugintester) testing helpers for DocPad plugins\n\n<!-- INSTALL/ -->\n\n<h2>Install</h2>\n\n<a href=\"https://npmjs.com\" title=\"npm is a package manager for javascript\"><h3>npm</h3></a>\n<ul>\n<li>Install: <code>npm install --save @bevry/pluginloader</code></li>\n<li>Import: <code>import pkg from ('@bevry/pluginloader')</code></li>\n<li>Require: <code>const pkg = require('@bevry/pluginloader').default</code></li>\n</ul>\n\n<h3><a href=\"https://editions.bevry.me\" title=\"Editions are the best way to produce and consume packages you care about.\">Editions</a></h3>\n\n<p>This package is published with the following editions:</p>\n\n<ul><li><code>@bevry/pluginloader/source/index.ts</code> is <a href=\"https://www.typescriptlang.org/\" title=\"TypeScript is a typed superset of JavaScript that compiles to plain JavaScript. \">TypeScript</a> source code with <a href=\"https://babeljs.io/docs/learn-es2015/#modules\" title=\"ECMAScript Modules\">Import</a> for modules</li>\n<li><code>@bevry/pluginloader</code> aliases <code>@bevry/pluginloader/edition-esnext/index.js</code></li>\n<li><code>@bevry/pluginloader/edition-esnext/index.js</code> is <a href=\"https://www.typescriptlang.org/\" title=\"TypeScript is a typed superset of JavaScript that compiles to plain JavaScript. \">TypeScript</a> compiled against <a href=\"https://en.wikipedia.org/wiki/ECMAScript#ES.Next\" title=\"ECMAScript Next\">ESNext</a> for <a href=\"https://nodejs.org\" title=\"Node.js is a JavaScript runtime built on Chrome's V8 JavaScript engine\">Node.js</a> 10 || 12 || 13 || 14 with <a href=\"https://nodejs.org/dist/latest-v5.x/docs/api/modules.html\" title=\"Node/CJS Modules\">Require</a> for modules</li>\n<li><code>@bevry/pluginloader/edition-node-esm/index.js</code> is <a href=\"https://www.typescriptlang.org/\" title=\"TypeScript is a typed superset of JavaScript that compiles to plain JavaScript. \">TypeScript</a> compiled against <a href=\"https://en.wikipedia.org/wiki/ECMAScript#ES.Next\" title=\"ECMAScript Next\">ESNext</a> for <a href=\"https://nodejs.org\" title=\"Node.js is a JavaScript runtime built on Chrome's V8 JavaScript engine\">Node.js</a> with <a href=\"https://babeljs.io/docs/learn-es2015/#modules\" title=\"ECMAScript Modules\">Import</a> for modules</li></ul>\n\n<!-- /INSTALL -->\n\n\n<!-- HISTORY/ -->\n\n<h2>History</h2>\n\n<a href=\"https://github.com/bevry/pluginloader/blob/master/HISTORY.md#files\">Discover the release history by heading on over to the <code>HISTORY.md</code> file.</a>\n\n<!-- /HISTORY -->\n\n\n<!-- CONTRIBUTE/ -->\n\n<h2>Contribute</h2>\n\n<a href=\"https://github.com/bevry/pluginloader/blob/master/CONTRIBUTING.md#files\">Discover how you can contribute by heading on over to the <code>CONTRIBUTING.md</code> file.</a>\n\n<!-- /CONTRIBUTE -->\n\n\n<!-- BACKERS/ -->\n\n<h2>Backers</h2>\n\n<h3>Maintainers</h3>\n\nThese amazing people are maintaining this project:\n\n<ul><li><a href=\"https://balupton.com\">Benjamin Lupton</a> — <a href=\"https://github.com/bevry/pluginloader/commits?author=balupton\" title=\"View the GitHub contributions of Benjamin Lupton on repository bevry/pluginloader\">view contributions</a></li></ul>\n\n<h3>Sponsors</h3>\n\nNo sponsors yet! Will you be the first?\n\n<span class=\"badge-githubsponsors\"><a href=\"https://github.com/sponsors/balupton\" title=\"Donate to this project using GitHub Sponsors\"><img src=\"https://img.shields.io/badge/github-donate-yellow.svg\" alt=\"GitHub Sponsors donate button\" /></a></span>\n<span class=\"badge-patreon\"><a href=\"https://patreon.com/bevry\" title=\"Donate to this project using Patreon\"><img src=\"https://img.shields.io/badge/patreon-donate-yellow.svg\" alt=\"Patreon donate button\" /></a></span>\n<span class=\"badge-flattr\"><a href=\"https://flattr.com/profile/balupton\" title=\"Donate to this project using Flattr\"><img src=\"https://img.shields.io/badge/flattr-donate-yellow.svg\" alt=\"Flattr donate button\" /></a></span>\n<span class=\"badge-liberapay\"><a href=\"https://liberapay.com/bevry\" title=\"Donate to this project using Liberapay\"><img src=\"https://img.shields.io/badge/liberapay-donate-yellow.svg\" alt=\"Liberapay donate button\" /></a></span>\n<span class=\"badge-buymeacoffee\"><a href=\"https://buymeacoffee.com/balupton\" title=\"Donate to this project using Buy Me A Coffee\"><img src=\"https://img.shields.io/badge/buy%20me%20a%20coffee-donate-yellow.svg\" alt=\"Buy Me A Coffee donate button\" /></a></span>\n<span class=\"badge-opencollective\"><a href=\"https://opencollective.com/bevry\" title=\"Donate to this project using Open Collective\"><img src=\"https://img.shields.io/badge/open%20collective-donate-yellow.svg\" alt=\"Open Collective donate button\" /></a></span>\n<span class=\"badge-crypto\"><a href=\"https://bevry.me/crypto\" title=\"Donate to this project using Cryptocurrency\"><img src=\"https://img.shields.io/badge/crypto-donate-yellow.svg\" alt=\"crypto donate button\" /></a></span>\n<span class=\"badge-paypal\"><a href=\"https://bevry.me/paypal\" title=\"Donate to this project using Paypal\"><img src=\"https://img.shields.io/badge/paypal-donate-yellow.svg\" alt=\"PayPal donate button\" /></a></span>\n<span class=\"badge-wishlist\"><a href=\"https://bevry.me/wishlist\" title=\"Buy an item on our wishlist for us\"><img src=\"https://img.shields.io/badge/wishlist-donate-yellow.svg\" alt=\"Wishlist browse button\" /></a></span>\n\n<h3>Contributors</h3>\n\nThese amazing people have contributed code to this project:\n\n<ul><li><a href=\"https://balupton.com\">Benjamin Lupton</a> — <a href=\"https://github.com/bevry/pluginloader/commits?author=balupton\" title=\"View the GitHub contributions of Benjamin Lupton on repository bevry/pluginloader\">view contributions</a></li></ul>\n\n<a href=\"https://github.com/bevry/pluginloader/blob/master/CONTRIBUTING.md#files\">Discover how you can contribute by heading on over to the <code>CONTRIBUTING.md</code> file.</a>\n\n<!-- /BACKERS -->\n\n\n<!-- LICENSE/ -->\n\n<h2>License</h2>\n\nUnless stated otherwise all works are:\n\n<ul><li>Copyright &copy; 2018+ <a href=\"https://balupton.com\">Benjamin Lupton</a></li></ul>\n\nand licensed under:\n\n<ul><li><a href=\"http://spdx.org/licenses/MIT.html\">MIT License</a></li></ul>\n\n<!-- /LICENSE -->\n","readmeFilename":"README.md","_id":"@bevry/pluginloader@4.11.0-next.1597700407.c6eb071671da4b8ab0a46dd5e136f9fa675c714b","_nodeVersion":"14.8.0","_npmVersion":"6.14.7","dist":{"integrity":"sha512-WvkUWVI7urnt0keU3umJCTJyCRF30JB7n8EuGdn1ifFvZgRraa7vWDiA50wNMS75Vo8nKAbXVw4w+giI+zhCjA==","shasum":"79b9b3ab674036a21119abc8d00edd71ca63f0c2","tarball":"https://registry.npmjs.org/@bevry/pluginloader/-/pluginloader-4.11.0-next.1597700407.c6eb071671da4b8ab0a46dd5e136f9fa675c714b.tgz","fileCount":13,"unpackedSize":53684,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfOvk5CRA9TVsSAnZWagAAyVMP/RZ7Od138bTQibQwyidG\nmJs2TKQgD6UbnNgeo9t537xOOg9pzy3D9aoYxVimKwbebRek3iQUhNsP7fO1\nTJEiUcYKScmJ5KeAX62e5yf1OR7/rVYg7d2GChmV8HCymFW2/NL/lPZu9Cdk\nHa+WG3xM78bMqC9oNlw2xnqKMHooopQweulNkYelvAAn9cR7acjonrwYs8gM\n5jLXwuFtJK8sH2XBItj0NFtwwej6eykQ6ISoS27nTM4kwvazGjBwMg4DdPHq\nkk0M5qo5MAFe8ySRRGLZDQMInqeTsigAQLwVHrV2UAURjvjsIzH3vUtuQOQN\nKHD1dmWiD852SQRj4Vr2bq7gm04IPKQj1Hx1q9AemPn+eDdvNFoGP/+7IKi2\nBPfehHHDb/YWj8cniNqxV+/Lz4ghk7npAzAO/amiQUcl0r1EZeb1sRe6nCWb\nDM5v+T5dCftJ2EM38ljmz9Hos0XfcV7eMc8V2ow5zROmgF7e5EejDifOD27s\n3KTE93TY+R7Lo9A7l3tVP5xxXJQ6rMKEfIXbU3iCnQ8Kf36nNz8TQEmZmK9z\ni/hruWrTvvXBoUXP1uXgmXxF/mbl36/Yjw+nOYdXrnEGgMClYz/kUl2byYUu\n4kPf4JFjnF9zMQ/5ykDidnXWE/INAu1DO8ZVFulDkySt0euKOhIwmvMs7pyf\n2I2x\r\n=06cC\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC8bFRL14Dq35ttcju1cRZrbVENO3rnsqI8pCyyVPG2aQIgfLJWHX8/x4ra0u/fateBxWcSCsRuvVXhbIANe7e9OaU="}]},"_npmUser":{"name":"bevryme","email":"us@bevry.me"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/pluginloader_4.11.0-next.1597700407.c6eb071671da4b8ab0a46dd5e136f9fa675c714b_1597700409125_0.687725211711562"},"_hasShrinkwrap":false},"4.11.0":{"name":"@bevry/pluginloader","version":"4.11.0","description":"A class for loading, verifying, and creating plugins. Used by DocPad for years.","homepage":"https://github.com/bevry/pluginloader","license":"MIT","keywords":["bevry","docpad","export-default","loader","node","plugin","plugins","typed","types","typescript"],"badges":{"list":["travisci","npmversion","npmdownloads","daviddm","daviddmdev","---","githubsponsors","patreon","flattr","liberapay","buymeacoffee","opencollective","crypto","paypal","wishlist"],"config":{"githubSponsorsUsername":"balupton","buymeacoffeeUsername":"balupton","cryptoURL":"https://bevry.me/crypto","flattrUsername":"balupton","liberapayUsername":"bevry","opencollectiveUsername":"bevry","patreonUsername":"bevry","paypalURL":"https://bevry.me/paypal","wishlistURL":"https://bevry.me/wishlist","travisTLD":"com","githubUsername":"bevry","githubRepository":"pluginloader","githubSlug":"bevry/pluginloader","npmPackageName":"@bevry/pluginloader"}},"funding":"https://bevry.me/fund","author":{"name":"2018+ Benjamin Lupton","email":"b@lupton.cc","url":"https://balupton.com"},"maintainers":[{"email":"b@lupton.cc","name":"balupton"},{"email":"us@bevry.me","name":"bevryme"},{"email":"sumitrai96@gmail.com","name":"sumitrai"}],"contributors":[{"name":"Benjamin Lupton","email":"b@lupton.cc","url":"https://github.com/balupton"}],"bugs":{"url":"https://github.com/bevry/pluginloader/issues"},"repository":{"type":"git","url":"git+https://github.com/bevry/pluginloader.git"},"engines":{"node":">=10"},"editions":[{"description":"TypeScript source code with Import for modules","directory":"source","entry":"index.ts","tags":["typescript","import"],"engines":false},{"description":"TypeScript compiled against ESNext for Node.js 10 || 12 || 13 || 14 with Require for modules","directory":"edition-esnext","entry":"index.js","tags":["javascript","esnext","require"],"engines":{"node":"10 || 12 || 13 || 14"}},{"description":"TypeScript compiled against ESNext for Node.js with Import for modules","directory":"edition-node-esm","entry":"index.js","tags":["javascript","import"],"engines":{"node":true,"browsers":false}}],"types":"./compiled-types/","type":"module","main":"edition-esnext/index.js","exports":{"node":{"import":"./edition-node-esm/index.js","require":"./edition-esnext/index.js"}},"dependencies":{"errlop":"^3.16.0","semver":"^7.3.2","typechecker":"^7.13.0"},"devDependencies":{"@bevry/update-contributors":"^1.15.0","@typescript-eslint/eslint-plugin":"^3.9.1","@typescript-eslint/parser":"^3.9.1","assert-helpers":"^6.19.0","eslint":"^7.7.0","eslint-config-bevry":"^3.19.0","eslint-config-prettier":"^6.11.0","eslint-plugin-prettier":"^3.1.4","kava":"^5.11.0","make-deno-edition":"^1.0.0","prettier":"^2.0.5","projectz":"^2.14.0","surge":"^0.21.6","typedoc":"^0.18.0","typescript":"^3.9.7","valid-directory":"^3.0.0"},"scripts":{"our:clean":"rm -Rf ./docs ./edition* ./es2015 ./es5 ./out ./.next","our:compile":"npm run our:compile:deno && npm run our:compile:edition-esnext && npm run our:compile:edition-node-esm && npm run our:compile:types","our:compile:deno":"make-deno-edition --attempt","our:compile:edition-esnext":"tsc --module commonjs --target ESNext --outDir ./edition-esnext --project tsconfig.json && ( test ! -d edition-esnext/source || ( mv edition-esnext/source edition-temp && rm -Rf edition-esnext && mv edition-temp edition-esnext ) ) && echo '{\"type\": \"commonjs\"}' > edition-esnext/package.json","our:compile:edition-node-esm":"tsc --module ESNext --target ESNext --outDir ./edition-node-esm --project tsconfig.json && ( test ! -d edition-node-esm/source || ( mv edition-node-esm/source edition-temp && rm -Rf edition-node-esm && mv edition-temp edition-node-esm ) ) && echo '{\"type\": \"module\"}' > edition-node-esm/package.json","our:compile:types":"tsc --project tsconfig.json --emitDeclarationOnly --declaration --declarationMap --declarationDir ./compiled-types && ( test ! -d compiled-types/source || ( mv compiled-types/source edition-temp && rm -Rf compiled-types && mv edition-temp compiled-types ) )","our:deploy":"echo no need for this project","our:meta":"npm run our:meta:contributors && npm run our:meta:docs && npm run our:meta:projectz","our:meta:contributors":"update-contributors","our:meta:docs":"npm run our:meta:docs:typedoc","our:meta:docs:typedoc":"rm -Rf ./docs && typedoc --mode file --exclude '**/+(*test*|node_modules)' --excludeExternals --name \"$npm_package_name\" --readme ./README.md --out ./docs ./source","our:meta:projectz":"projectz compile","our:release":"npm run our:release:prepare && npm run our:release:check-changelog && npm run our:release:check-dirty && npm run our:release:tag && npm run our:release:push","our:release:check-changelog":"cat ./HISTORY.md | grep v$npm_package_version || (echo add a changelog entry for v$npm_package_version && exit -1)","our:release:check-dirty":"git diff --exit-code","our:release:prepare":"npm run our:clean && npm run our:compile && npm run our:test && npm run our:meta","our:release:push":"git push origin master && git push origin --tags","our:release:tag":"export MESSAGE=$(cat ./HISTORY.md | sed -n \"/## v$npm_package_version/,/##/p\" | sed 's/## //' | awk 'NR>1{print buf}{buf = $0}') && test \"$MESSAGE\" || (echo 'proper changelog entry not found' && exit -1) && git tag v$npm_package_version -am \"$MESSAGE\"","our:setup":"npm run our:setup:install","our:setup:install":"npm install","our:test":"npm run our:verify && npm test","our:verify":"npm run our:verify:directory && npm run our:verify:eslint && npm run our:verify:prettier","our:verify:directory":"valid-directory","our:verify:eslint":"eslint --fix --ignore-pattern '**/*.d.ts' --ignore-pattern '**/vendor/' --ignore-pattern '**/node_modules/' --ext .mjs,.js,.jsx,.ts,.tsx ./source","our:verify:prettier":"prettier --write .","test":"node ./edition-esnext/test.js"},"eslintConfig":{"extends":["bevry"]},"prettier":{"semi":false,"singleQuote":true},"gitHead":"84e7b1d7d022ab68c4c8c9d7fd12b41392b52df6","_id":"@bevry/pluginloader@4.11.0","_nodeVersion":"14.8.0","_npmVersion":"6.14.7","dist":{"integrity":"sha512-2PBg50zN0sj79ad/5mVTp5zClegCZjb4hsIT9Qnp2CYFAzCSf2bPMhBr9FWj6wBZB2H//zOMBCIIb5hAURYAhw==","shasum":"35d62c6e0b8b57fc155bbbd9929cc33059642a1b","tarball":"https://registry.npmjs.org/@bevry/pluginloader/-/pluginloader-4.11.0.tgz","fileCount":13,"unpackedSize":53627,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfOvlICRA9TVsSAnZWagAAkCQP/iZddTpkDiMPm4/IYQeF\nf8sWnTK5vq+Blu1Ln0tYZdM45qcD3JqTQH5bTKdgEB3yYuvVkqNRKGhmLDWS\nA++PqkKAoi/CJIGX0LEkuIKvdOCwkoNniEz9KLD6vXuEaPGN+yCGfako9IfR\nsNEoe+ZCsUdnlcWe4FfyEVwCoMOEQjIgTf+ja5wQO66oEmEbn1N3PiWs3jqO\noJaZzgecY/jnyGec0dSIiyDcANFjhLSUXcT8d77j5WxVd+vaID9tMUa3/tZA\niQtQZBIMdBS42y4TlS/2Y0oD8P35gMxaLoay+TpiyB1h/TQKGOvjmic+gofH\naHyhrs1/Ujr9FNGM2csb4+N7uPHg7lpW3NvPbxEbkjXn5uXK84ZEXYjDln2Y\nq8YkKN91ZfEp1UBfPLK0JrhwbsVKq4w/iK9tnD8z7BTu7H8+1u4+UZ5rF/aj\n0D71GPnDYVstXopAZd8/imoJtB6w8FceC3wsBllp1KHmSoK5DL0NbdxYp7Ba\nmK14m/HcsDRuRZfiOUlRoXI9Qb7cJjF8cR80c+K7MglffVI6ePqxxKGefx85\n9F7nM+QtTNwh3kXNOI3BysoibftYYm3qhpHXhTqoSzImSUL4lo8RqSoO9qdF\nw8WjFbK9260M/nEZJ1OOZAdstaHWtGvPpebwZMyD2WmcfwcUzoc911YOZCGE\nqrPS\r\n=BtZT\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBbdC1EY0OQXOEnV/r+UZyAgdGVOhZSvHJfY2z0Ool6YAiA3hh6IMZUtDp6D2coTiz7ipmugCZa/qufhfl/sep9ATg=="}]},"_npmUser":{"name":"bevryme","email":"us@bevry.me"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/pluginloader_4.11.0_1597700424392_0.8553327873385648"},"_hasShrinkwrap":false},"4.11.0-next.1598189738.16623181352ec1637e3de3c074e4bf6b082d1847":{"name":"@bevry/pluginloader","version":"4.11.0-next.1598189738.16623181352ec1637e3de3c074e4bf6b082d1847","description":"A class for loading, verifying, and creating plugins. Used by DocPad for years.","homepage":"https://github.com/bevry/pluginloader","license":"MIT","keywords":["bevry","docpad","export-default","loader","node","plugin","plugins","typed","types","typescript"],"badges":{"list":["travisci","npmversion","npmdownloads","daviddm","daviddmdev","---","githubsponsors","patreon","flattr","liberapay","buymeacoffee","opencollective","crypto","paypal","wishlist"],"config":{"githubSponsorsUsername":"balupton","buymeacoffeeUsername":"balupton","cryptoURL":"https://bevry.me/crypto","flattrUsername":"balupton","liberapayUsername":"bevry","opencollectiveUsername":"bevry","patreonUsername":"bevry","paypalURL":"https://bevry.me/paypal","wishlistURL":"https://bevry.me/wishlist","travisTLD":"com","githubUsername":"bevry","githubRepository":"pluginloader","githubSlug":"bevry/pluginloader","npmPackageName":"@bevry/pluginloader"}},"funding":"https://bevry.me/fund","author":{"name":"2018+ Benjamin Lupton","email":"b@lupton.cc","url":"https://balupton.com"},"maintainers":[{"email":"b@lupton.cc","name":"balupton"},{"email":"us@bevry.me","name":"bevryme"},{"email":"sumitrai96@gmail.com","name":"sumitrai"}],"contributors":[{"name":"Benjamin Lupton","email":"b@lupton.cc","url":"https://github.com/balupton"}],"bugs":{"url":"https://github.com/bevry/pluginloader/issues"},"repository":{"type":"git","url":"git+https://github.com/bevry/pluginloader.git"},"engines":{"node":">=10"},"editions":[{"description":"TypeScript source code with Import for modules","directory":"source","entry":"index.ts","tags":["typescript","import"],"engines":false},{"description":"TypeScript compiled against ESNext for Node.js 10 || 12 || 13 || 14 with Require for modules","directory":"edition-esnext","entry":"index.js","tags":["javascript","esnext","require"],"engines":{"node":"10 || 12 || 13 || 14"}},{"description":"TypeScript compiled against ESNext for Node.js with Import for modules","directory":"edition-node-esm","entry":"index.js","tags":["javascript","import"],"engines":{"node":true,"browsers":false}}],"types":"./compiled-types/","type":"module","main":"edition-esnext/index.js","exports":{"node":{"import":"./edition-node-esm/index.js","require":"./edition-esnext/index.js"}},"dependencies":{"errlop":"^3.16.0","semver":"^7.3.2","typechecker":"^7.13.0"},"devDependencies":{"@bevry/update-contributors":"^1.15.0","@typescript-eslint/eslint-plugin":"^3.9.1","@typescript-eslint/parser":"^3.9.1","assert-helpers":"^7.0.1","eslint":"^7.7.0","eslint-config-bevry":"^3.19.0","eslint-config-prettier":"^6.11.0","eslint-plugin-prettier":"^3.1.4","kava":"^5.11.0","make-deno-edition":"^1.0.0","prettier":"^2.0.5","projectz":"^2.14.0","surge":"^0.21.6","typedoc":"^0.18.0","typescript":"^4.0.2","valid-directory":"^3.0.0"},"scripts":{"our:clean":"rm -Rf ./docs ./edition* ./es2015 ./es5 ./out ./.next","our:compile":"npm run our:compile:deno && npm run our:compile:edition-esnext && npm run our:compile:edition-node-esm && npm run our:compile:types","our:compile:deno":"make-deno-edition --attempt","our:compile:edition-esnext":"tsc --module commonjs --target ESNext --outDir ./edition-esnext --project tsconfig.json && ( test ! -d edition-esnext/source || ( mv edition-esnext/source edition-temp && rm -Rf edition-esnext && mv edition-temp edition-esnext ) ) && echo '{\"type\": \"commonjs\"}' > edition-esnext/package.json","our:compile:edition-node-esm":"tsc --module ESNext --target ESNext --outDir ./edition-node-esm --project tsconfig.json && ( test ! -d edition-node-esm/source || ( mv edition-node-esm/source edition-temp && rm -Rf edition-node-esm && mv edition-temp edition-node-esm ) ) && echo '{\"type\": \"module\"}' > edition-node-esm/package.json","our:compile:types":"tsc --project tsconfig.json --emitDeclarationOnly --declaration --declarationMap --declarationDir ./compiled-types && ( test ! -d compiled-types/source || ( mv compiled-types/source edition-temp && rm -Rf compiled-types && mv edition-temp compiled-types ) )","our:deploy":"echo no need for this project","our:meta":"npm run our:meta:contributors && npm run our:meta:docs && npm run our:meta:projectz","our:meta:contributors":"update-contributors","our:meta:docs":"npm run our:meta:docs:typedoc","our:meta:docs:typedoc":"rm -Rf ./docs && typedoc --mode file --exclude '**/+(*test*|node_modules)' --excludeExternals --name \"$npm_package_name\" --readme ./README.md --out ./docs ./source","our:meta:projectz":"projectz compile","our:release":"npm run our:release:prepare && npm run our:release:check-changelog && npm run our:release:check-dirty && npm run our:release:tag && npm run our:release:push","our:release:check-changelog":"cat ./HISTORY.md | grep v$npm_package_version || (echo add a changelog entry for v$npm_package_version && exit -1)","our:release:check-dirty":"git diff --exit-code","our:release:prepare":"npm run our:clean && npm run our:compile && npm run our:test && npm run our:meta","our:release:push":"git push origin master && git push origin --tags","our:release:tag":"export MESSAGE=$(cat ./HISTORY.md | sed -n \"/## v$npm_package_version/,/##/p\" | sed 's/## //' | awk 'NR>1{print buf}{buf = $0}') && test \"$MESSAGE\" || (echo 'proper changelog entry not found' && exit -1) && git tag v$npm_package_version -am \"$MESSAGE\"","our:setup":"npm run our:setup:install","our:setup:install":"npm install","our:test":"npm run our:verify && npm test","our:verify":"npm run our:verify:directory && npm run our:verify:eslint && npm run our:verify:prettier","our:verify:directory":"valid-directory","our:verify:eslint":"eslint --fix --ignore-pattern '**/*.d.ts' --ignore-pattern '**/vendor/' --ignore-pattern '**/node_modules/' --ext .mjs,.js,.jsx,.ts,.tsx ./source","our:verify:prettier":"prettier --write .","test":"node ./edition-esnext/test.js"},"eslintConfig":{"extends":["bevry"]},"prettier":{"semi":false,"singleQuote":true},"gitHead":"16623181352ec1637e3de3c074e4bf6b082d1847","readme":"<!-- TITLE/ -->\n\n<h1>@bevry/pluginloader</h1>\n\n<!-- /TITLE -->\n\n\n<!-- BADGES/ -->\n\n<span class=\"badge-travisci\"><a href=\"http://travis-ci.com/bevry/pluginloader\" title=\"Check this project's build status on TravisCI\"><img src=\"https://img.shields.io/travis/com/bevry/pluginloader/master.svg\" alt=\"Travis CI Build Status\" /></a></span>\n<span class=\"badge-npmversion\"><a href=\"https://npmjs.org/package/@bevry/pluginloader\" title=\"View this project on NPM\"><img src=\"https://img.shields.io/npm/v/@bevry/pluginloader.svg\" alt=\"NPM version\" /></a></span>\n<span class=\"badge-npmdownloads\"><a href=\"https://npmjs.org/package/@bevry/pluginloader\" title=\"View this project on NPM\"><img src=\"https://img.shields.io/npm/dm/@bevry/pluginloader.svg\" alt=\"NPM downloads\" /></a></span>\n<span class=\"badge-daviddm\"><a href=\"https://david-dm.org/bevry/pluginloader\" title=\"View the status of this project's dependencies on DavidDM\"><img src=\"https://img.shields.io/david/bevry/pluginloader.svg\" alt=\"Dependency Status\" /></a></span>\n<span class=\"badge-daviddmdev\"><a href=\"https://david-dm.org/bevry/pluginloader#info=devDependencies\" title=\"View the status of this project's development dependencies on DavidDM\"><img src=\"https://img.shields.io/david/dev/bevry/pluginloader.svg\" alt=\"Dev Dependency Status\" /></a></span>\n<br class=\"badge-separator\" />\n<span class=\"badge-githubsponsors\"><a href=\"https://github.com/sponsors/balupton\" title=\"Donate to this project using GitHub Sponsors\"><img src=\"https://img.shields.io/badge/github-donate-yellow.svg\" alt=\"GitHub Sponsors donate button\" /></a></span>\n<span class=\"badge-patreon\"><a href=\"https://patreon.com/bevry\" title=\"Donate to this project using Patreon\"><img src=\"https://img.shields.io/badge/patreon-donate-yellow.svg\" alt=\"Patreon donate button\" /></a></span>\n<span class=\"badge-flattr\"><a href=\"https://flattr.com/profile/balupton\" title=\"Donate to this project using Flattr\"><img src=\"https://img.shields.io/badge/flattr-donate-yellow.svg\" alt=\"Flattr donate button\" /></a></span>\n<span class=\"badge-liberapay\"><a href=\"https://liberapay.com/bevry\" title=\"Donate to this project using Liberapay\"><img src=\"https://img.shields.io/badge/liberapay-donate-yellow.svg\" alt=\"Liberapay donate button\" /></a></span>\n<span class=\"badge-buymeacoffee\"><a href=\"https://buymeacoffee.com/balupton\" title=\"Donate to this project using Buy Me A Coffee\"><img src=\"https://img.shields.io/badge/buy%20me%20a%20coffee-donate-yellow.svg\" alt=\"Buy Me A Coffee donate button\" /></a></span>\n<span class=\"badge-opencollective\"><a href=\"https://opencollective.com/bevry\" title=\"Donate to this project using Open Collective\"><img src=\"https://img.shields.io/badge/open%20collective-donate-yellow.svg\" alt=\"Open Collective donate button\" /></a></span>\n<span class=\"badge-crypto\"><a href=\"https://bevry.me/crypto\" title=\"Donate to this project using Cryptocurrency\"><img src=\"https://img.shields.io/badge/crypto-donate-yellow.svg\" alt=\"crypto donate button\" /></a></span>\n<span class=\"badge-paypal\"><a href=\"https://bevry.me/paypal\" title=\"Donate to this project using Paypal\"><img src=\"https://img.shields.io/badge/paypal-donate-yellow.svg\" alt=\"PayPal donate button\" /></a></span>\n<span class=\"badge-wishlist\"><a href=\"https://bevry.me/wishlist\" title=\"Buy an item on our wishlist for us\"><img src=\"https://img.shields.io/badge/wishlist-donate-yellow.svg\" alt=\"Wishlist browse button\" /></a></span>\n\n<!-- /BADGES -->\n\n\n<!-- DESCRIPTION/ -->\n\nA class for loading, verifying, and creating plugins. Used by DocPad for years.\n\n<!-- /DESCRIPTION -->\n\n\n## Usage\n\n[Complete API Documentation.](http://master.pluginloader.bevry.surge.sh/docs/globals.html)\n\n### Basics\n\nCreate your project:\n\n1. `mkdir my-project`\n1. `cd my-project`\n\nCreate your plugin:\n\n1. `mkdir myplugin`\n1. `cd myplugin`\n1. `npm init`\n1. `index.js` to:\n\n    ```javascript\n    module.exports = function (BasePlugin) {\n        return class MyPlugin extends BasePlugin {\n            constructor(...args) {\n                super(...args)\n                console.log('hello from my plugin')\n            }\n        }\n    }\n    ```\n\n1. `cd ..`\n\nCreate your plugin loader:\n\n1. `mkdir myapp`\n1. `cd myapp`\n1. `npm init`\n1. `index.js` to:\n\n    ```javascript\n    import PluginLoader from '@bevry/pluginloader'\n\n    class BasePlugin {\n        constructor() {\n            console.log('hello from base plugin')\n        }\n    }\n\n    const pluginLoader = new PluginLoader({\n        BasePlugin,\n        pluginPath: require('path').resolve(__dirname, '..', 'myplugin'),\n    })\n    ```\n\n1. `cd ..`\n\nRun the project:\n\n1. `node myapp/index.js`\n\n### Ecosystem\n\n-   [pluginclerk](https://github.com/bevry/pluginclerk) a project for fetching compatible plugins from the npm registry\n-   [docpad-baseplugin](https://github.com/docpad/docpad-baseplugin) the BasePlugin class that DocPad uses\n-   [docpad-plugintester](https://github.com/docpad/docpad-plugintester) testing helpers for DocPad plugins\n\n<!-- INSTALL/ -->\n\n<h2>Install</h2>\n\n<a href=\"https://npmjs.com\" title=\"npm is a package manager for javascript\"><h3>npm</h3></a>\n<ul>\n<li>Install: <code>npm install --save @bevry/pluginloader</code></li>\n<li>Import: <code>import pkg from ('@bevry/pluginloader')</code></li>\n<li>Require: <code>const pkg = require('@bevry/pluginloader').default</code></li>\n</ul>\n\n<h3><a href=\"https://editions.bevry.me\" title=\"Editions are the best way to produce and consume packages you care about.\">Editions</a></h3>\n\n<p>This package is published with the following editions:</p>\n\n<ul><li><code>@bevry/pluginloader/source/index.ts</code> is <a href=\"https://www.typescriptlang.org/\" title=\"TypeScript is a typed superset of JavaScript that compiles to plain JavaScript. \">TypeScript</a> source code with <a href=\"https://babeljs.io/docs/learn-es2015/#modules\" title=\"ECMAScript Modules\">Import</a> for modules</li>\n<li><code>@bevry/pluginloader</code> aliases <code>@bevry/pluginloader/edition-esnext/index.js</code></li>\n<li><code>@bevry/pluginloader/edition-esnext/index.js</code> is <a href=\"https://www.typescriptlang.org/\" title=\"TypeScript is a typed superset of JavaScript that compiles to plain JavaScript. \">TypeScript</a> compiled against <a href=\"https://en.wikipedia.org/wiki/ECMAScript#ES.Next\" title=\"ECMAScript Next\">ESNext</a> for <a href=\"https://nodejs.org\" title=\"Node.js is a JavaScript runtime built on Chrome's V8 JavaScript engine\">Node.js</a> 10 || 12 || 13 || 14 with <a href=\"https://nodejs.org/dist/latest-v5.x/docs/api/modules.html\" title=\"Node/CJS Modules\">Require</a> for modules</li>\n<li><code>@bevry/pluginloader/edition-node-esm/index.js</code> is <a href=\"https://www.typescriptlang.org/\" title=\"TypeScript is a typed superset of JavaScript that compiles to plain JavaScript. \">TypeScript</a> compiled against <a href=\"https://en.wikipedia.org/wiki/ECMAScript#ES.Next\" title=\"ECMAScript Next\">ESNext</a> for <a href=\"https://nodejs.org\" title=\"Node.js is a JavaScript runtime built on Chrome's V8 JavaScript engine\">Node.js</a> with <a href=\"https://babeljs.io/docs/learn-es2015/#modules\" title=\"ECMAScript Modules\">Import</a> for modules</li></ul>\n\n<!-- /INSTALL -->\n\n\n<!-- HISTORY/ -->\n\n<h2>History</h2>\n\n<a href=\"https://github.com/bevry/pluginloader/blob/master/HISTORY.md#files\">Discover the release history by heading on over to the <code>HISTORY.md</code> file.</a>\n\n<!-- /HISTORY -->\n\n\n<!-- CONTRIBUTE/ -->\n\n<h2>Contribute</h2>\n\n<a href=\"https://github.com/bevry/pluginloader/blob/master/CONTRIBUTING.md#files\">Discover how you can contribute by heading on over to the <code>CONTRIBUTING.md</code> file.</a>\n\n<!-- /CONTRIBUTE -->\n\n\n<!-- BACKERS/ -->\n\n<h2>Backers</h2>\n\n<h3>Maintainers</h3>\n\nThese amazing people are maintaining this project:\n\n<ul><li><a href=\"https://balupton.com\">Benjamin Lupton</a> — <a href=\"https://github.com/bevry/pluginloader/commits?author=balupton\" title=\"View the GitHub contributions of Benjamin Lupton on repository bevry/pluginloader\">view contributions</a></li></ul>\n\n<h3>Sponsors</h3>\n\nNo sponsors yet! Will you be the first?\n\n<span class=\"badge-githubsponsors\"><a href=\"https://github.com/sponsors/balupton\" title=\"Donate to this project using GitHub Sponsors\"><img src=\"https://img.shields.io/badge/github-donate-yellow.svg\" alt=\"GitHub Sponsors donate button\" /></a></span>\n<span class=\"badge-patreon\"><a href=\"https://patreon.com/bevry\" title=\"Donate to this project using Patreon\"><img src=\"https://img.shields.io/badge/patreon-donate-yellow.svg\" alt=\"Patreon donate button\" /></a></span>\n<span class=\"badge-flattr\"><a href=\"https://flattr.com/profile/balupton\" title=\"Donate to this project using Flattr\"><img src=\"https://img.shields.io/badge/flattr-donate-yellow.svg\" alt=\"Flattr donate button\" /></a></span>\n<span class=\"badge-liberapay\"><a href=\"https://liberapay.com/bevry\" title=\"Donate to this project using Liberapay\"><img src=\"https://img.shields.io/badge/liberapay-donate-yellow.svg\" alt=\"Liberapay donate button\" /></a></span>\n<span class=\"badge-buymeacoffee\"><a href=\"https://buymeacoffee.com/balupton\" title=\"Donate to this project using Buy Me A Coffee\"><img src=\"https://img.shields.io/badge/buy%20me%20a%20coffee-donate-yellow.svg\" alt=\"Buy Me A Coffee donate button\" /></a></span>\n<span class=\"badge-opencollective\"><a href=\"https://opencollective.com/bevry\" title=\"Donate to this project using Open Collective\"><img src=\"https://img.shields.io/badge/open%20collective-donate-yellow.svg\" alt=\"Open Collective donate button\" /></a></span>\n<span class=\"badge-crypto\"><a href=\"https://bevry.me/crypto\" title=\"Donate to this project using Cryptocurrency\"><img src=\"https://img.shields.io/badge/crypto-donate-yellow.svg\" alt=\"crypto donate button\" /></a></span>\n<span class=\"badge-paypal\"><a href=\"https://bevry.me/paypal\" title=\"Donate to this project using Paypal\"><img src=\"https://img.shields.io/badge/paypal-donate-yellow.svg\" alt=\"PayPal donate button\" /></a></span>\n<span class=\"badge-wishlist\"><a href=\"https://bevry.me/wishlist\" title=\"Buy an item on our wishlist for us\"><img src=\"https://img.shields.io/badge/wishlist-donate-yellow.svg\" alt=\"Wishlist browse button\" /></a></span>\n\n<h3>Contributors</h3>\n\nThese amazing people have contributed code to this project:\n\n<ul><li><a href=\"https://balupton.com\">Benjamin Lupton</a> — <a href=\"https://github.com/bevry/pluginloader/commits?author=balupton\" title=\"View the GitHub contributions of Benjamin Lupton on repository bevry/pluginloader\">view contributions</a></li></ul>\n\n<a href=\"https://github.com/bevry/pluginloader/blob/master/CONTRIBUTING.md#files\">Discover how you can contribute by heading on over to the <code>CONTRIBUTING.md</code> file.</a>\n\n<!-- /BACKERS -->\n\n\n<!-- LICENSE/ -->\n\n<h2>License</h2>\n\nUnless stated otherwise all works are:\n\n<ul><li>Copyright &copy; 2018+ <a href=\"https://balupton.com\">Benjamin Lupton</a></li></ul>\n\nand licensed under:\n\n<ul><li><a href=\"http://spdx.org/licenses/MIT.html\">MIT License</a></li></ul>\n\n<!-- /LICENSE -->\n","readmeFilename":"README.md","_id":"@bevry/pluginloader@4.11.0-next.1598189738.16623181352ec1637e3de3c074e4bf6b082d1847","_nodeVersion":"14.8.0","_npmVersion":"6.14.7","dist":{"integrity":"sha512-Z26OAuFKzUsBpMe78rLftQyb2dnI9LVOy2ioaWWC2lUx7cvODY0+OUHVc7MfvmoZzd2gwL7yfRxZmlurIUksxA==","shasum":"037f860855537593d14f7af2c5d11ccad9cee93d","tarball":"https://registry.npmjs.org/@bevry/pluginloader/-/pluginloader-4.11.0-next.1598189738.16623181352ec1637e3de3c074e4bf6b082d1847.tgz","fileCount":13,"unpackedSize":53683,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfQnCrCRA9TVsSAnZWagAAqxAQAIhRyId6TQPfZKFMjAY5\nOMU1XF52A3pC+lRQGHY/1RyIPTsYujImSIywdXyy0tsxZdu4GKapuo4eaJJ8\nymVXhUkMJO0xvdtw0/OpfoL4RpKCeySIHolI7nPI+xftWkCmCZWLkMpbd66m\njnxdkka8piQEkaW+ecxQir+adH9kA9bOZawGHLigB4s2CiOlKBgXfhZ2oA+5\nZlfYm7D/YcTiP/pe4G9uQTvrny92uLEBO8rwHDL/TdjWKtKeq2rN2v/BgFQ5\nT44AROcVsVkvnI1hfTa6IaQemd8iwurcurrNflJyfATDS37YPG849e2wvrpJ\nFSUlT4qu5Gv3l/BJGVeHI3TdCMRvWA5ki9SnMwZcjtpNvLpcfVgbICQsf6i9\nBSjYRTA8lIfOIqVE60S1X2k5o0uZD36RufenD+mp/yXdttB8MVWvhabjcJT8\ntVRL2Qg/nrC4UfJBahbym4r6bOZyIpronBWDNqfGCCLqKVtr9trmiuGOPvTB\nQWxi8l04FWojIU8VUiV39NGlfitTKl403UyC3g0DHDT1qXtaDjTluEKnZBv+\n78317bH8MGO+VzYlQusFF7QVTZvsWC2qsRu3coYUeHXM/Cba+HHu35bl9rRf\nvtegoJ0+JpUgzj4um0NUirK5P2mqjSqvX3x2LAw9TRduYGvjLxw3XjyE3S27\nQ6He\r\n=agTx\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDlyrQwt8vmu+PNELlevllp9pSe0q8V0dCpJQGxD6FwuQIgcvZfAXsZ4WJZblP9GwIjLyC6UtZIrUk2sf9TZs8T6ws="}]},"_npmUser":{"name":"bevryme","email":"us@bevry.me"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/pluginloader_4.11.0-next.1598189738.16623181352ec1637e3de3c074e4bf6b082d1847_1598189739335_0.7749291595903067"},"_hasShrinkwrap":false},"4.11.0-next.1598783510.b0ea3629dda6fbdfbe706c19dd910f64f63183e1":{"name":"@bevry/pluginloader","version":"4.11.0-next.1598783510.b0ea3629dda6fbdfbe706c19dd910f64f63183e1","description":"A class for loading, verifying, and creating plugins. Used by DocPad for years.","homepage":"https://github.com/bevry/pluginloader","license":"MIT","keywords":["bevry","docpad","export-default","loader","node","plugin","plugins","typed","types","typescript"],"badges":{"list":["travisci","npmversion","npmdownloads","daviddm","daviddmdev","---","githubsponsors","patreon","flattr","liberapay","buymeacoffee","opencollective","crypto","paypal","wishlist"],"config":{"githubSponsorsUsername":"balupton","buymeacoffeeUsername":"balupton","cryptoURL":"https://bevry.me/crypto","flattrUsername":"balupton","liberapayUsername":"bevry","opencollectiveUsername":"bevry","patreonUsername":"bevry","paypalURL":"https://bevry.me/paypal","wishlistURL":"https://bevry.me/wishlist","travisTLD":"com","githubUsername":"bevry","githubRepository":"pluginloader","githubSlug":"bevry/pluginloader","npmPackageName":"@bevry/pluginloader"}},"funding":"https://bevry.me/fund","author":{"name":"2018+ Benjamin Lupton","email":"b@lupton.cc","url":"https://balupton.com"},"maintainers":[{"email":"b@lupton.cc","name":"balupton"},{"email":"us@bevry.me","name":"bevryme"},{"email":"sumitrai96@gmail.com","name":"sumitrai"}],"contributors":[{"name":"Benjamin Lupton","email":"b@lupton.cc","url":"https://github.com/balupton"}],"bugs":{"url":"https://github.com/bevry/pluginloader/issues"},"repository":{"type":"git","url":"git+https://github.com/bevry/pluginloader.git"},"engines":{"node":">=10"},"editions":[{"description":"TypeScript source code with Import for modules","directory":"source","entry":"index.ts","tags":["typescript","import"],"engines":false},{"description":"TypeScript compiled against ESNext for Node.js 10 || 12 || 13 || 14 with Require for modules","directory":"edition-esnext","entry":"index.js","tags":["javascript","esnext","require"],"engines":{"node":"10 || 12 || 13 || 14"}},{"description":"TypeScript compiled against ESNext for Node.js with Import for modules","directory":"edition-node-esm","entry":"index.js","tags":["javascript","import"],"engines":{"node":true,"browsers":false}}],"types":"./compiled-types/","type":"module","main":"edition-esnext/index.js","exports":{"node":{"import":"./edition-node-esm/index.js","require":"./edition-esnext/index.js"}},"dependencies":{"errlop":"^3.16.0","semver":"^7.3.2","typechecker":"^7.13.0"},"devDependencies":{"@bevry/update-contributors":"^1.15.0","@typescript-eslint/eslint-plugin":"^3.9.1","@typescript-eslint/parser":"^3.9.1","assert-helpers":"^7.0.1","eslint":"^7.7.0","eslint-config-bevry":"^3.19.0","eslint-config-prettier":"^6.11.0","eslint-plugin-prettier":"^3.1.4","kava":"^5.11.0","make-deno-edition":"^1.0.0","prettier":"^2.0.5","projectz":"^2.14.0","surge":"^0.21.6","typedoc":"^0.18.0","typescript":"^4.0.2","valid-directory":"^3.0.0"},"scripts":{"our:clean":"rm -Rf ./docs ./edition* ./es2015 ./es5 ./out ./.next","our:compile":"npm run our:compile:deno && npm run our:compile:edition-esnext && npm run our:compile:edition-node-esm && npm run our:compile:types","our:compile:deno":"make-deno-edition --attempt","our:compile:edition-esnext":"tsc --module commonjs --target ESNext --outDir ./edition-esnext --project tsconfig.json && ( test ! -d edition-esnext/source || ( mv edition-esnext/source edition-temp && rm -Rf edition-esnext && mv edition-temp edition-esnext ) ) && echo '{\"type\": \"commonjs\"}' > edition-esnext/package.json","our:compile:edition-node-esm":"tsc --module ESNext --target ESNext --outDir ./edition-node-esm --project tsconfig.json && ( test ! -d edition-node-esm/source || ( mv edition-node-esm/source edition-temp && rm -Rf edition-node-esm && mv edition-temp edition-node-esm ) ) && echo '{\"type\": \"module\"}' > edition-node-esm/package.json","our:compile:types":"tsc --project tsconfig.json --emitDeclarationOnly --declaration --declarationMap --declarationDir ./compiled-types && ( test ! -d compiled-types/source || ( mv compiled-types/source edition-temp && rm -Rf compiled-types && mv edition-temp compiled-types ) )","our:deploy":"echo no need for this project","our:meta":"npm run our:meta:contributors && npm run our:meta:docs && npm run our:meta:projectz","our:meta:contributors":"update-contributors","our:meta:docs":"npm run our:meta:docs:typedoc","our:meta:docs:typedoc":"rm -Rf ./docs && typedoc --mode file --exclude '**/+(*test*|node_modules)' --excludeExternals --name \"$npm_package_name\" --readme ./README.md --out ./docs ./source","our:meta:projectz":"projectz compile","our:release":"npm run our:release:prepare && npm run our:release:check-changelog && npm run our:release:check-dirty && npm run our:release:tag && npm run our:release:push","our:release:check-changelog":"cat ./HISTORY.md | grep v$npm_package_version || (echo add a changelog entry for v$npm_package_version && exit -1)","our:release:check-dirty":"git diff --exit-code","our:release:prepare":"npm run our:clean && npm run our:compile && npm run our:test && npm run our:meta","our:release:push":"git push origin master && git push origin --tags","our:release:tag":"export MESSAGE=$(cat ./HISTORY.md | sed -n \"/## v$npm_package_version/,/##/p\" | sed 's/## //' | awk 'NR>1{print buf}{buf = $0}') && test \"$MESSAGE\" || (echo 'proper changelog entry not found' && exit -1) && git tag v$npm_package_version -am \"$MESSAGE\"","our:setup":"npm run our:setup:install","our:setup:install":"npm install","our:test":"npm run our:verify && npm test","our:verify":"npm run our:verify:directory && npm run our:verify:eslint && npm run our:verify:prettier","our:verify:directory":"valid-directory","our:verify:eslint":"eslint --fix --ignore-pattern '**/*.d.ts' --ignore-pattern '**/vendor/' --ignore-pattern '**/node_modules/' --ext .mjs,.js,.jsx,.ts,.tsx ./source","our:verify:prettier":"prettier --write .","test":"node ./edition-esnext/test.js"},"eslintConfig":{"extends":["bevry"]},"prettier":{"semi":false,"singleQuote":true},"gitHead":"b0ea3629dda6fbdfbe706c19dd910f64f63183e1","readme":"<!-- TITLE/ -->\n\n<h1>@bevry/pluginloader</h1>\n\n<!-- /TITLE -->\n\n\n<!-- BADGES/ -->\n\n<span class=\"badge-travisci\"><a href=\"http://travis-ci.com/bevry/pluginloader\" title=\"Check this project's build status on TravisCI\"><img src=\"https://img.shields.io/travis/com/bevry/pluginloader/master.svg\" alt=\"Travis CI Build Status\" /></a></span>\n<span class=\"badge-npmversion\"><a href=\"https://npmjs.org/package/@bevry/pluginloader\" title=\"View this project on NPM\"><img src=\"https://img.shields.io/npm/v/@bevry/pluginloader.svg\" alt=\"NPM version\" /></a></span>\n<span class=\"badge-npmdownloads\"><a href=\"https://npmjs.org/package/@bevry/pluginloader\" title=\"View this project on NPM\"><img src=\"https://img.shields.io/npm/dm/@bevry/pluginloader.svg\" alt=\"NPM downloads\" /></a></span>\n<span class=\"badge-daviddm\"><a href=\"https://david-dm.org/bevry/pluginloader\" title=\"View the status of this project's dependencies on DavidDM\"><img src=\"https://img.shields.io/david/bevry/pluginloader.svg\" alt=\"Dependency Status\" /></a></span>\n<span class=\"badge-daviddmdev\"><a href=\"https://david-dm.org/bevry/pluginloader#info=devDependencies\" title=\"View the status of this project's development dependencies on DavidDM\"><img src=\"https://img.shields.io/david/dev/bevry/pluginloader.svg\" alt=\"Dev Dependency Status\" /></a></span>\n<br class=\"badge-separator\" />\n<span class=\"badge-githubsponsors\"><a href=\"https://github.com/sponsors/balupton\" title=\"Donate to this project using GitHub Sponsors\"><img src=\"https://img.shields.io/badge/github-donate-yellow.svg\" alt=\"GitHub Sponsors donate button\" /></a></span>\n<span class=\"badge-patreon\"><a href=\"https://patreon.com/bevry\" title=\"Donate to this project using Patreon\"><img src=\"https://img.shields.io/badge/patreon-donate-yellow.svg\" alt=\"Patreon donate button\" /></a></span>\n<span class=\"badge-flattr\"><a href=\"https://flattr.com/profile/balupton\" title=\"Donate to this project using Flattr\"><img src=\"https://img.shields.io/badge/flattr-donate-yellow.svg\" alt=\"Flattr donate button\" /></a></span>\n<span class=\"badge-liberapay\"><a href=\"https://liberapay.com/bevry\" title=\"Donate to this project using Liberapay\"><img src=\"https://img.shields.io/badge/liberapay-donate-yellow.svg\" alt=\"Liberapay donate button\" /></a></span>\n<span class=\"badge-buymeacoffee\"><a href=\"https://buymeacoffee.com/balupton\" title=\"Donate to this project using Buy Me A Coffee\"><img src=\"https://img.shields.io/badge/buy%20me%20a%20coffee-donate-yellow.svg\" alt=\"Buy Me A Coffee donate button\" /></a></span>\n<span class=\"badge-opencollective\"><a href=\"https://opencollective.com/bevry\" title=\"Donate to this project using Open Collective\"><img src=\"https://img.shields.io/badge/open%20collective-donate-yellow.svg\" alt=\"Open Collective donate button\" /></a></span>\n<span class=\"badge-crypto\"><a href=\"https://bevry.me/crypto\" title=\"Donate to this project using Cryptocurrency\"><img src=\"https://img.shields.io/badge/crypto-donate-yellow.svg\" alt=\"crypto donate button\" /></a></span>\n<span class=\"badge-paypal\"><a href=\"https://bevry.me/paypal\" title=\"Donate to this project using Paypal\"><img src=\"https://img.shields.io/badge/paypal-donate-yellow.svg\" alt=\"PayPal donate button\" /></a></span>\n<span class=\"badge-wishlist\"><a href=\"https://bevry.me/wishlist\" title=\"Buy an item on our wishlist for us\"><img src=\"https://img.shields.io/badge/wishlist-donate-yellow.svg\" alt=\"Wishlist browse button\" /></a></span>\n\n<!-- /BADGES -->\n\n\n<!-- DESCRIPTION/ -->\n\nA class for loading, verifying, and creating plugins. Used by DocPad for years.\n\n<!-- /DESCRIPTION -->\n\n\n## Usage\n\n[Complete API Documentation.](http://master.pluginloader.bevry.surge.sh/docs/globals.html)\n\n### Basics\n\nCreate your project:\n\n1. `mkdir my-project`\n1. `cd my-project`\n\nCreate your plugin:\n\n1. `mkdir myplugin`\n1. `cd myplugin`\n1. `npm init`\n1. `index.js` to:\n\n    ```javascript\n    module.exports = function (BasePlugin) {\n        return class MyPlugin extends BasePlugin {\n            constructor(...args) {\n                super(...args)\n                console.log('hello from my plugin')\n            }\n        }\n    }\n    ```\n\n1. `cd ..`\n\nCreate your plugin loader:\n\n1. `mkdir myapp`\n1. `cd myapp`\n1. `npm init`\n1. `index.js` to:\n\n    ```javascript\n    import PluginLoader from '@bevry/pluginloader'\n\n    class BasePlugin {\n        constructor() {\n            console.log('hello from base plugin')\n        }\n    }\n\n    const pluginLoader = new PluginLoader({\n        BasePlugin,\n        pluginPath: require('path').resolve(__dirname, '..', 'myplugin'),\n    })\n    ```\n\n1. `cd ..`\n\nRun the project:\n\n1. `node myapp/index.js`\n\n### Ecosystem\n\n-   [pluginclerk](https://github.com/bevry/pluginclerk) a project for fetching compatible plugins from the npm registry\n-   [docpad-baseplugin](https://github.com/docpad/docpad-baseplugin) the BasePlugin class that DocPad uses\n-   [docpad-plugintester](https://github.com/docpad/docpad-plugintester) testing helpers for DocPad plugins\n\n<!-- INSTALL/ -->\n\n<h2>Install</h2>\n\n<a href=\"https://npmjs.com\" title=\"npm is a package manager for javascript\"><h3>npm</h3></a>\n<ul>\n<li>Install: <code>npm install --save @bevry/pluginloader</code></li>\n<li>Import: <code>import pkg from ('@bevry/pluginloader')</code></li>\n<li>Require: <code>const pkg = require('@bevry/pluginloader').default</code></li>\n</ul>\n\n<h3><a href=\"https://editions.bevry.me\" title=\"Editions are the best way to produce and consume packages you care about.\">Editions</a></h3>\n\n<p>This package is published with the following editions:</p>\n\n<ul><li><code>@bevry/pluginloader/source/index.ts</code> is <a href=\"https://www.typescriptlang.org/\" title=\"TypeScript is a typed superset of JavaScript that compiles to plain JavaScript. \">TypeScript</a> source code with <a href=\"https://babeljs.io/docs/learn-es2015/#modules\" title=\"ECMAScript Modules\">Import</a> for modules</li>\n<li><code>@bevry/pluginloader</code> aliases <code>@bevry/pluginloader/edition-esnext/index.js</code></li>\n<li><code>@bevry/pluginloader/edition-esnext/index.js</code> is <a href=\"https://www.typescriptlang.org/\" title=\"TypeScript is a typed superset of JavaScript that compiles to plain JavaScript. \">TypeScript</a> compiled against <a href=\"https://en.wikipedia.org/wiki/ECMAScript#ES.Next\" title=\"ECMAScript Next\">ESNext</a> for <a href=\"https://nodejs.org\" title=\"Node.js is a JavaScript runtime built on Chrome's V8 JavaScript engine\">Node.js</a> 10 || 12 || 13 || 14 with <a href=\"https://nodejs.org/dist/latest-v5.x/docs/api/modules.html\" title=\"Node/CJS Modules\">Require</a> for modules</li>\n<li><code>@bevry/pluginloader/edition-node-esm/index.js</code> is <a href=\"https://www.typescriptlang.org/\" title=\"TypeScript is a typed superset of JavaScript that compiles to plain JavaScript. \">TypeScript</a> compiled against <a href=\"https://en.wikipedia.org/wiki/ECMAScript#ES.Next\" title=\"ECMAScript Next\">ESNext</a> for <a href=\"https://nodejs.org\" title=\"Node.js is a JavaScript runtime built on Chrome's V8 JavaScript engine\">Node.js</a> with <a href=\"https://babeljs.io/docs/learn-es2015/#modules\" title=\"ECMAScript Modules\">Import</a> for modules</li></ul>\n\n<!-- /INSTALL -->\n\n\n<!-- HISTORY/ -->\n\n<h2>History</h2>\n\n<a href=\"https://github.com/bevry/pluginloader/blob/master/HISTORY.md#files\">Discover the release history by heading on over to the <code>HISTORY.md</code> file.</a>\n\n<!-- /HISTORY -->\n\n\n<!-- CONTRIBUTE/ -->\n\n<h2>Contribute</h2>\n\n<a href=\"https://github.com/bevry/pluginloader/blob/master/CONTRIBUTING.md#files\">Discover how you can contribute by heading on over to the <code>CONTRIBUTING.md</code> file.</a>\n\n<!-- /CONTRIBUTE -->\n\n\n<!-- BACKERS/ -->\n\n<h2>Backers</h2>\n\n<h3>Maintainers</h3>\n\nThese amazing people are maintaining this project:\n\n<ul><li><a href=\"https://balupton.com\">Benjamin Lupton</a> — <a href=\"https://github.com/bevry/pluginloader/commits?author=balupton\" title=\"View the GitHub contributions of Benjamin Lupton on repository bevry/pluginloader\">view contributions</a></li></ul>\n\n<h3>Sponsors</h3>\n\nNo sponsors yet! Will you be the first?\n\n<span class=\"badge-githubsponsors\"><a href=\"https://github.com/sponsors/balupton\" title=\"Donate to this project using GitHub Sponsors\"><img src=\"https://img.shields.io/badge/github-donate-yellow.svg\" alt=\"GitHub Sponsors donate button\" /></a></span>\n<span class=\"badge-patreon\"><a href=\"https://patreon.com/bevry\" title=\"Donate to this project using Patreon\"><img src=\"https://img.shields.io/badge/patreon-donate-yellow.svg\" alt=\"Patreon donate button\" /></a></span>\n<span class=\"badge-flattr\"><a href=\"https://flattr.com/profile/balupton\" title=\"Donate to this project using Flattr\"><img src=\"https://img.shields.io/badge/flattr-donate-yellow.svg\" alt=\"Flattr donate button\" /></a></span>\n<span class=\"badge-liberapay\"><a href=\"https://liberapay.com/bevry\" title=\"Donate to this project using Liberapay\"><img src=\"https://img.shields.io/badge/liberapay-donate-yellow.svg\" alt=\"Liberapay donate button\" /></a></span>\n<span class=\"badge-buymeacoffee\"><a href=\"https://buymeacoffee.com/balupton\" title=\"Donate to this project using Buy Me A Coffee\"><img src=\"https://img.shields.io/badge/buy%20me%20a%20coffee-donate-yellow.svg\" alt=\"Buy Me A Coffee donate button\" /></a></span>\n<span class=\"badge-opencollective\"><a href=\"https://opencollective.com/bevry\" title=\"Donate to this project using Open Collective\"><img src=\"https://img.shields.io/badge/open%20collective-donate-yellow.svg\" alt=\"Open Collective donate button\" /></a></span>\n<span class=\"badge-crypto\"><a href=\"https://bevry.me/crypto\" title=\"Donate to this project using Cryptocurrency\"><img src=\"https://img.shields.io/badge/crypto-donate-yellow.svg\" alt=\"crypto donate button\" /></a></span>\n<span class=\"badge-paypal\"><a href=\"https://bevry.me/paypal\" title=\"Donate to this project using Paypal\"><img src=\"https://img.shields.io/badge/paypal-donate-yellow.svg\" alt=\"PayPal donate button\" /></a></span>\n<span class=\"badge-wishlist\"><a href=\"https://bevry.me/wishlist\" title=\"Buy an item on our wishlist for us\"><img src=\"https://img.shields.io/badge/wishlist-donate-yellow.svg\" alt=\"Wishlist browse button\" /></a></span>\n\n<h3>Contributors</h3>\n\nThese amazing people have contributed code to this project:\n\n<ul><li><a href=\"https://balupton.com\">Benjamin Lupton</a> — <a href=\"https://github.com/bevry/pluginloader/commits?author=balupton\" title=\"View the GitHub contributions of Benjamin Lupton on repository bevry/pluginloader\">view contributions</a></li></ul>\n\n<a href=\"https://github.com/bevry/pluginloader/blob/master/CONTRIBUTING.md#files\">Discover how you can contribute by heading on over to the <code>CONTRIBUTING.md</code> file.</a>\n\n<!-- /BACKERS -->\n\n\n<!-- LICENSE/ -->\n\n<h2>License</h2>\n\nUnless stated otherwise all works are:\n\n<ul><li>Copyright &copy; 2018+ <a href=\"https://balupton.com\">Benjamin Lupton</a></li></ul>\n\nand licensed under:\n\n<ul><li><a href=\"http://spdx.org/licenses/MIT.html\">MIT License</a></li></ul>\n\n<!-- /LICENSE -->\n","readmeFilename":"README.md","_id":"@bevry/pluginloader@4.11.0-next.1598783510.b0ea3629dda6fbdfbe706c19dd910f64f63183e1","_nodeVersion":"14.9.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-RHEsUtMPkMTPUSrKBaxASxy+5dZNvKheif+Ues4rx/qStXwgMhjfS+bXV3HyiLnhH5RinH92A2sEW5vIteZr+Q==","shasum":"81c7c3b09e9567b1a03c617c9a9d195e41b47973","tarball":"https://registry.npmjs.org/@bevry/pluginloader/-/pluginloader-4.11.0-next.1598783510.b0ea3629dda6fbdfbe706c19dd910f64f63183e1.tgz","fileCount":13,"unpackedSize":53683,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfS4AYCRA9TVsSAnZWagAAmVQP/jJlVQyGXTFrq7Vcr1W6\npZ3yV3VRxrmQ3ZFJnr3HwRxN7m/44JBKh398MAhuhiFGdyHtiHc6Uu2Ie9U8\nW/qo/WUFMLRz0BQzU7PYfaWHmZEaE09KYdAjUT4PorPf7QAzVrjHo4fl6gQD\nQ5YaYj289sbaYjQwx8roSbGEQSsxX+jT+2cHtKOnQMTTNpXFA9gP8thBbNiw\nnmP0DU+6x746zTMs93+8QdJaECunotZ1UrFcQ1awKXUJ/Y61Ea9f2NMfnDiC\nOEN3kQLLccOuIrz24eLG7RH+hFczQWs3t2yWRENgyfEMliJWKaeO9ava2Xao\n1uxuLtMvM5YrLrbYsGPODPIIj/gX1HrduMkxRcAiefUHYkFI02JNBqQi+3//\n61UIA9uExpskWTpdf6RPKfP5+2M+MzKbfXqYMNDCUHxvvrYRXw0ptGILiN2D\n+85da9rkCl8wBF8ITSH+avmVYcPX2EvLQkKLHOA2e+N/T3oPx7A8rrzbu3gs\nabq578E7noD3OIhyohrEnBZD087xWkWHiCb2WQ4QKxE/9XzKF+wUw97nKOjL\nQu8/j4Juh8F9xaMr7AqrzQ3kBJORMu1ObyS8xJm/H8imrpkJSr5J+3mveBKN\nbjp3a/qNOPANEr7s55+D2lNL4VKF+qYAX7kxLFofCpS3Jz3AIVcDjy1U3Eoa\nFeOt\r\n=6Pmx\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCiBRgBGkBBy/3gCsF7haECjOkpI+yrnx8dtE2qFuzHLAIgPFwSrEK7qPwqdizMkn75btQGA4Oger+r0gY4uIqyTMw="}]},"_npmUser":{"name":"bevryme","email":"us@bevry.me"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/pluginloader_4.11.0-next.1598783510.b0ea3629dda6fbdfbe706c19dd910f64f63183e1_1598783511796_0.9230654196642212"},"_hasShrinkwrap":false},"4.11.0-next.1599076969.b2bd37e07fbb99f9fb3c6aedab178187c86b9bd4":{"name":"@bevry/pluginloader","version":"4.11.0-next.1599076969.b2bd37e07fbb99f9fb3c6aedab178187c86b9bd4","description":"A class for loading, verifying, and creating plugins. Used by DocPad for years.","homepage":"https://github.com/bevry/pluginloader","license":"MIT","keywords":["bevry","docpad","export-default","loader","node","plugin","plugins","typed","types","typescript"],"badges":{"list":["travisci","npmversion","npmdownloads","daviddm","daviddmdev","---","githubsponsors","patreon","flattr","liberapay","buymeacoffee","opencollective","crypto","paypal","wishlist"],"config":{"githubSponsorsUsername":"balupton","buymeacoffeeUsername":"balupton","cryptoURL":"https://bevry.me/crypto","flattrUsername":"balupton","liberapayUsername":"bevry","opencollectiveUsername":"bevry","patreonUsername":"bevry","paypalURL":"https://bevry.me/paypal","wishlistURL":"https://bevry.me/wishlist","travisTLD":"com","githubUsername":"bevry","githubRepository":"pluginloader","githubSlug":"bevry/pluginloader","npmPackageName":"@bevry/pluginloader"}},"funding":"https://bevry.me/fund","author":{"name":"2018+ Benjamin Lupton","email":"b@lupton.cc","url":"https://balupton.com"},"maintainers":[{"email":"b@lupton.cc","name":"balupton"},{"email":"us@bevry.me","name":"bevryme"},{"email":"sumitrai96@gmail.com","name":"sumitrai"}],"contributors":[{"name":"Benjamin Lupton","email":"b@lupton.cc","url":"https://github.com/balupton"}],"bugs":{"url":"https://github.com/bevry/pluginloader/issues"},"repository":{"type":"git","url":"git+https://github.com/bevry/pluginloader.git"},"engines":{"node":">=10"},"editions":[{"description":"TypeScript source code with Import for modules","directory":"source","entry":"index.ts","tags":["typescript","import"],"engines":false},{"description":"TypeScript compiled against ESNext for Node.js 10 || 12 || 13 || 14 with Require for modules","directory":"edition-esnext","entry":"index.js","tags":["javascript","esnext","require"],"engines":{"node":"10 || 12 || 13 || 14"}},{"description":"TypeScript compiled against ESNext for Node.js with Import for modules","directory":"edition-node-esm","entry":"index.js","tags":["javascript","import"],"engines":{"node":true,"browsers":false}}],"types":"./compiled-types/","type":"module","main":"edition-esnext/index.js","exports":{"node":{"import":"./edition-node-esm/index.js","require":"./edition-esnext/index.js"}},"dependencies":{"errlop":"^3.16.0","semver":"^7.3.2","typechecker":"^7.13.0"},"devDependencies":{"@bevry/update-contributors":"^1.15.0","@typescript-eslint/eslint-plugin":"^3.9.1","@typescript-eslint/parser":"^3.9.1","assert-helpers":"^7.0.1","eslint":"^7.7.0","eslint-config-bevry":"^3.19.0","eslint-config-prettier":"^6.11.0","eslint-plugin-prettier":"^3.1.4","kava":"^5.11.0","make-deno-edition":"^1.0.0","prettier":"^2.0.5","projectz":"^2.14.0","surge":"^0.21.6","typedoc":"^0.18.0","typescript":"^4.0.2","valid-directory":"^3.0.0"},"scripts":{"our:clean":"rm -Rf ./docs ./edition* ./es2015 ./es5 ./out ./.next","our:compile":"npm run our:compile:deno && npm run our:compile:edition-esnext && npm run our:compile:edition-node-esm && npm run our:compile:types","our:compile:deno":"make-deno-edition --attempt","our:compile:edition-esnext":"tsc --module commonjs --target ESNext --outDir ./edition-esnext --project tsconfig.json && ( test ! -d edition-esnext/source || ( mv edition-esnext/source edition-temp && rm -Rf edition-esnext && mv edition-temp edition-esnext ) ) && echo '{\"type\": \"commonjs\"}' > edition-esnext/package.json","our:compile:edition-node-esm":"tsc --module ESNext --target ESNext --outDir ./edition-node-esm --project tsconfig.json && ( test ! -d edition-node-esm/source || ( mv edition-node-esm/source edition-temp && rm -Rf edition-node-esm && mv edition-temp edition-node-esm ) ) && echo '{\"type\": \"module\"}' > edition-node-esm/package.json","our:compile:types":"tsc --project tsconfig.json --emitDeclarationOnly --declaration --declarationMap --declarationDir ./compiled-types && ( test ! -d compiled-types/source || ( mv compiled-types/source edition-temp && rm -Rf compiled-types && mv edition-temp compiled-types ) )","our:deploy":"echo no need for this project","our:meta":"npm run our:meta:contributors && npm run our:meta:docs && npm run our:meta:projectz","our:meta:contributors":"update-contributors","our:meta:docs":"npm run our:meta:docs:typedoc","our:meta:docs:typedoc":"rm -Rf ./docs && typedoc --mode file --exclude '**/+(*test*|node_modules)' --excludeExternals --name \"$npm_package_name\" --readme ./README.md --out ./docs ./source","our:meta:projectz":"projectz compile","our:release":"npm run our:release:prepare && npm run our:release:check-changelog && npm run our:release:check-dirty && npm run our:release:tag && npm run our:release:push","our:release:check-changelog":"cat ./HISTORY.md | grep v$npm_package_version || (echo add a changelog entry for v$npm_package_version && exit -1)","our:release:check-dirty":"git diff --exit-code","our:release:prepare":"npm run our:clean && npm run our:compile && npm run our:test && npm run our:meta","our:release:push":"git push origin master && git push origin --tags","our:release:tag":"export MESSAGE=$(cat ./HISTORY.md | sed -n \"/## v$npm_package_version/,/##/p\" | sed 's/## //' | awk 'NR>1{print buf}{buf = $0}') && test \"$MESSAGE\" || (echo 'proper changelog entry not found' && exit -1) && git tag v$npm_package_version -am \"$MESSAGE\"","our:setup":"npm run our:setup:install","our:setup:install":"npm install","our:test":"npm run our:verify && npm test","our:verify":"npm run our:verify:directory && npm run our:verify:eslint && npm run our:verify:prettier","our:verify:directory":"valid-directory","our:verify:eslint":"eslint --fix --ignore-pattern '**/*.d.ts' --ignore-pattern '**/vendor/' --ignore-pattern '**/node_modules/' --ext .mjs,.js,.jsx,.ts,.tsx ./source","our:verify:prettier":"prettier --write .","test":"node ./edition-esnext/test.js"},"eslintConfig":{"extends":["bevry"]},"prettier":{"semi":false,"singleQuote":true},"gitHead":"b2bd37e07fbb99f9fb3c6aedab178187c86b9bd4","readme":"<!-- TITLE/ -->\n\n<h1>@bevry/pluginloader</h1>\n\n<!-- /TITLE -->\n\n\n<!-- BADGES/ -->\n\n<span class=\"badge-travisci\"><a href=\"http://travis-ci.com/bevry/pluginloader\" title=\"Check this project's build status on TravisCI\"><img src=\"https://img.shields.io/travis/com/bevry/pluginloader/master.svg\" alt=\"Travis CI Build Status\" /></a></span>\n<span class=\"badge-npmversion\"><a href=\"https://npmjs.org/package/@bevry/pluginloader\" title=\"View this project on NPM\"><img src=\"https://img.shields.io/npm/v/@bevry/pluginloader.svg\" alt=\"NPM version\" /></a></span>\n<span class=\"badge-npmdownloads\"><a href=\"https://npmjs.org/package/@bevry/pluginloader\" title=\"View this project on NPM\"><img src=\"https://img.shields.io/npm/dm/@bevry/pluginloader.svg\" alt=\"NPM downloads\" /></a></span>\n<span class=\"badge-daviddm\"><a href=\"https://david-dm.org/bevry/pluginloader\" title=\"View the status of this project's dependencies on DavidDM\"><img src=\"https://img.shields.io/david/bevry/pluginloader.svg\" alt=\"Dependency Status\" /></a></span>\n<span class=\"badge-daviddmdev\"><a href=\"https://david-dm.org/bevry/pluginloader#info=devDependencies\" title=\"View the status of this project's development dependencies on DavidDM\"><img src=\"https://img.shields.io/david/dev/bevry/pluginloader.svg\" alt=\"Dev Dependency Status\" /></a></span>\n<br class=\"badge-separator\" />\n<span class=\"badge-githubsponsors\"><a href=\"https://github.com/sponsors/balupton\" title=\"Donate to this project using GitHub Sponsors\"><img src=\"https://img.shields.io/badge/github-donate-yellow.svg\" alt=\"GitHub Sponsors donate button\" /></a></span>\n<span class=\"badge-patreon\"><a href=\"https://patreon.com/bevry\" title=\"Donate to this project using Patreon\"><img src=\"https://img.shields.io/badge/patreon-donate-yellow.svg\" alt=\"Patreon donate button\" /></a></span>\n<span class=\"badge-flattr\"><a href=\"https://flattr.com/profile/balupton\" title=\"Donate to this project using Flattr\"><img src=\"https://img.shields.io/badge/flattr-donate-yellow.svg\" alt=\"Flattr donate button\" /></a></span>\n<span class=\"badge-liberapay\"><a href=\"https://liberapay.com/bevry\" title=\"Donate to this project using Liberapay\"><img src=\"https://img.shields.io/badge/liberapay-donate-yellow.svg\" alt=\"Liberapay donate button\" /></a></span>\n<span class=\"badge-buymeacoffee\"><a href=\"https://buymeacoffee.com/balupton\" title=\"Donate to this project using Buy Me A Coffee\"><img src=\"https://img.shields.io/badge/buy%20me%20a%20coffee-donate-yellow.svg\" alt=\"Buy Me A Coffee donate button\" /></a></span>\n<span class=\"badge-opencollective\"><a href=\"https://opencollective.com/bevry\" title=\"Donate to this project using Open Collective\"><img src=\"https://img.shields.io/badge/open%20collective-donate-yellow.svg\" alt=\"Open Collective donate button\" /></a></span>\n<span class=\"badge-crypto\"><a href=\"https://bevry.me/crypto\" title=\"Donate to this project using Cryptocurrency\"><img src=\"https://img.shields.io/badge/crypto-donate-yellow.svg\" alt=\"crypto donate button\" /></a></span>\n<span class=\"badge-paypal\"><a href=\"https://bevry.me/paypal\" title=\"Donate to this project using Paypal\"><img src=\"https://img.shields.io/badge/paypal-donate-yellow.svg\" alt=\"PayPal donate button\" /></a></span>\n<span class=\"badge-wishlist\"><a href=\"https://bevry.me/wishlist\" title=\"Buy an item on our wishlist for us\"><img src=\"https://img.shields.io/badge/wishlist-donate-yellow.svg\" alt=\"Wishlist browse button\" /></a></span>\n\n<!-- /BADGES -->\n\n\n<!-- DESCRIPTION/ -->\n\nA class for loading, verifying, and creating plugins. Used by DocPad for years.\n\n<!-- /DESCRIPTION -->\n\n\n## Usage\n\n[Complete API Documentation.](http://master.pluginloader.bevry.surge.sh/docs/globals.html)\n\n### Basics\n\nCreate your project:\n\n1. `mkdir my-project`\n1. `cd my-project`\n\nCreate your plugin:\n\n1. `mkdir myplugin`\n1. `cd myplugin`\n1. `npm init`\n1. `index.js` to:\n\n    ```javascript\n    module.exports = function (BasePlugin) {\n        return class MyPlugin extends BasePlugin {\n            constructor(...args) {\n                super(...args)\n                console.log('hello from my plugin')\n            }\n        }\n    }\n    ```\n\n1. `cd ..`\n\nCreate your plugin loader:\n\n1. `mkdir myapp`\n1. `cd myapp`\n1. `npm init`\n1. `index.js` to:\n\n    ```javascript\n    import PluginLoader from '@bevry/pluginloader'\n\n    class BasePlugin {\n        constructor() {\n            console.log('hello from base plugin')\n        }\n    }\n\n    const pluginLoader = new PluginLoader({\n        BasePlugin,\n        pluginPath: require('path').resolve(__dirname, '..', 'myplugin'),\n    })\n    ```\n\n1. `cd ..`\n\nRun the project:\n\n1. `node myapp/index.js`\n\n### Ecosystem\n\n-   [pluginclerk](https://github.com/bevry/pluginclerk) a project for fetching compatible plugins from the npm registry\n-   [docpad-baseplugin](https://github.com/docpad/docpad-baseplugin) the BasePlugin class that DocPad uses\n-   [docpad-plugintester](https://github.com/docpad/docpad-plugintester) testing helpers for DocPad plugins\n\n<!-- INSTALL/ -->\n\n<h2>Install</h2>\n\n<a href=\"https://npmjs.com\" title=\"npm is a package manager for javascript\"><h3>npm</h3></a>\n<ul>\n<li>Install: <code>npm install --save @bevry/pluginloader</code></li>\n<li>Import: <code>import pkg from ('@bevry/pluginloader')</code></li>\n<li>Require: <code>const pkg = require('@bevry/pluginloader').default</code></li>\n</ul>\n\n<h3><a href=\"https://editions.bevry.me\" title=\"Editions are the best way to produce and consume packages you care about.\">Editions</a></h3>\n\n<p>This package is published with the following editions:</p>\n\n<ul><li><code>@bevry/pluginloader/source/index.ts</code> is <a href=\"https://www.typescriptlang.org/\" title=\"TypeScript is a typed superset of JavaScript that compiles to plain JavaScript. \">TypeScript</a> source code with <a href=\"https://babeljs.io/docs/learn-es2015/#modules\" title=\"ECMAScript Modules\">Import</a> for modules</li>\n<li><code>@bevry/pluginloader</code> aliases <code>@bevry/pluginloader/edition-esnext/index.js</code></li>\n<li><code>@bevry/pluginloader/edition-esnext/index.js</code> is <a href=\"https://www.typescriptlang.org/\" title=\"TypeScript is a typed superset of JavaScript that compiles to plain JavaScript. \">TypeScript</a> compiled against <a href=\"https://en.wikipedia.org/wiki/ECMAScript#ES.Next\" title=\"ECMAScript Next\">ESNext</a> for <a href=\"https://nodejs.org\" title=\"Node.js is a JavaScript runtime built on Chrome's V8 JavaScript engine\">Node.js</a> 10 || 12 || 13 || 14 with <a href=\"https://nodejs.org/dist/latest-v5.x/docs/api/modules.html\" title=\"Node/CJS Modules\">Require</a> for modules</li>\n<li><code>@bevry/pluginloader/edition-node-esm/index.js</code> is <a href=\"https://www.typescriptlang.org/\" title=\"TypeScript is a typed superset of JavaScript that compiles to plain JavaScript. \">TypeScript</a> compiled against <a href=\"https://en.wikipedia.org/wiki/ECMAScript#ES.Next\" title=\"ECMAScript Next\">ESNext</a> for <a href=\"https://nodejs.org\" title=\"Node.js is a JavaScript runtime built on Chrome's V8 JavaScript engine\">Node.js</a> with <a href=\"https://babeljs.io/docs/learn-es2015/#modules\" title=\"ECMAScript Modules\">Import</a> for modules</li></ul>\n\n<!-- /INSTALL -->\n\n\n<!-- HISTORY/ -->\n\n<h2>History</h2>\n\n<a href=\"https://github.com/bevry/pluginloader/blob/master/HISTORY.md#files\">Discover the release history by heading on over to the <code>HISTORY.md</code> file.</a>\n\n<!-- /HISTORY -->\n\n\n<!-- CONTRIBUTE/ -->\n\n<h2>Contribute</h2>\n\n<a href=\"https://github.com/bevry/pluginloader/blob/master/CONTRIBUTING.md#files\">Discover how you can contribute by heading on over to the <code>CONTRIBUTING.md</code> file.</a>\n\n<!-- /CONTRIBUTE -->\n\n\n<!-- BACKERS/ -->\n\n<h2>Backers</h2>\n\n<h3>Maintainers</h3>\n\nThese amazing people are maintaining this project:\n\n<ul><li><a href=\"https://balupton.com\">Benjamin Lupton</a> — <a href=\"https://github.com/bevry/pluginloader/commits?author=balupton\" title=\"View the GitHub contributions of Benjamin Lupton on repository bevry/pluginloader\">view contributions</a></li></ul>\n\n<h3>Sponsors</h3>\n\nNo sponsors yet! Will you be the first?\n\n<span class=\"badge-githubsponsors\"><a href=\"https://github.com/sponsors/balupton\" title=\"Donate to this project using GitHub Sponsors\"><img src=\"https://img.shields.io/badge/github-donate-yellow.svg\" alt=\"GitHub Sponsors donate button\" /></a></span>\n<span class=\"badge-patreon\"><a href=\"https://patreon.com/bevry\" title=\"Donate to this project using Patreon\"><img src=\"https://img.shields.io/badge/patreon-donate-yellow.svg\" alt=\"Patreon donate button\" /></a></span>\n<span class=\"badge-flattr\"><a href=\"https://flattr.com/profile/balupton\" title=\"Donate to this project using Flattr\"><img src=\"https://img.shields.io/badge/flattr-donate-yellow.svg\" alt=\"Flattr donate button\" /></a></span>\n<span class=\"badge-liberapay\"><a href=\"https://liberapay.com/bevry\" title=\"Donate to this project using Liberapay\"><img src=\"https://img.shields.io/badge/liberapay-donate-yellow.svg\" alt=\"Liberapay donate button\" /></a></span>\n<span class=\"badge-buymeacoffee\"><a href=\"https://buymeacoffee.com/balupton\" title=\"Donate to this project using Buy Me A Coffee\"><img src=\"https://img.shields.io/badge/buy%20me%20a%20coffee-donate-yellow.svg\" alt=\"Buy Me A Coffee donate button\" /></a></span>\n<span class=\"badge-opencollective\"><a href=\"https://opencollective.com/bevry\" title=\"Donate to this project using Open Collective\"><img src=\"https://img.shields.io/badge/open%20collective-donate-yellow.svg\" alt=\"Open Collective donate button\" /></a></span>\n<span class=\"badge-crypto\"><a href=\"https://bevry.me/crypto\" title=\"Donate to this project using Cryptocurrency\"><img src=\"https://img.shields.io/badge/crypto-donate-yellow.svg\" alt=\"crypto donate button\" /></a></span>\n<span class=\"badge-paypal\"><a href=\"https://bevry.me/paypal\" title=\"Donate to this project using Paypal\"><img src=\"https://img.shields.io/badge/paypal-donate-yellow.svg\" alt=\"PayPal donate button\" /></a></span>\n<span class=\"badge-wishlist\"><a href=\"https://bevry.me/wishlist\" title=\"Buy an item on our wishlist for us\"><img src=\"https://img.shields.io/badge/wishlist-donate-yellow.svg\" alt=\"Wishlist browse button\" /></a></span>\n\n<h3>Contributors</h3>\n\nThese amazing people have contributed code to this project:\n\n<ul><li><a href=\"https://balupton.com\">Benjamin Lupton</a> — <a href=\"https://github.com/bevry/pluginloader/commits?author=balupton\" title=\"View the GitHub contributions of Benjamin Lupton on repository bevry/pluginloader\">view contributions</a></li></ul>\n\n<a href=\"https://github.com/bevry/pluginloader/blob/master/CONTRIBUTING.md#files\">Discover how you can contribute by heading on over to the <code>CONTRIBUTING.md</code> file.</a>\n\n<!-- /BACKERS -->\n\n\n<!-- LICENSE/ -->\n\n<h2>License</h2>\n\nUnless stated otherwise all works are:\n\n<ul><li>Copyright &copy; 2018+ <a href=\"https://balupton.com\">Benjamin Lupton</a></li></ul>\n\nand licensed under:\n\n<ul><li><a href=\"http://spdx.org/licenses/MIT.html\">MIT License</a></li></ul>\n\n<!-- /LICENSE -->\n","readmeFilename":"README.md","_id":"@bevry/pluginloader@4.11.0-next.1599076969.b2bd37e07fbb99f9fb3c6aedab178187c86b9bd4","_nodeVersion":"14.9.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-kCDv+nJekpfnfT6wGZip2WJm1mJm+b0v0cz1EjWavvpjLgZV55bwpv58ZrQZBX/l6xQShAEDe8hsm2/Jcshy1Q==","shasum":"a326e6a1858688726f7118630477e3c35095f31f","tarball":"https://registry.npmjs.org/@bevry/pluginloader/-/pluginloader-4.11.0-next.1599076969.b2bd37e07fbb99f9fb3c6aedab178187c86b9bd4.tgz","fileCount":13,"unpackedSize":53683,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfT/prCRA9TVsSAnZWagAAo2IQAJjzg2y7ADZSD2MIbIgO\n3kB5HifzCD6hOgEPwNN7BrT5fM41tyUAOOIMgBG6oFPktDxXblFhcBWx1dxJ\nhnk6U2ozdHtXwe7f/4VM3wDnAOTNoYvD9kBWPotP+b/27SMEkNbSCtZzpmeO\n8jjpbyUyCiA/zC+iKmtePueiB7CU73rYZAewu2oRvrqXn32veqLHyADEAPi1\nvutrRQnEIU5HVAO9FSRqzXiyr0M4MxmalnCsV+LDMsFcXER6ymzkW8EMWFQM\n8DvebM77Bc4nNwlMCBqASM/p+aFY1RnZMRlioBWNiG5vDztMdHnw1NClafUf\nxt6RDPYQJuj97UYxLlaE2leMdSeRemdftdBL51vjamjWgM6SiU6m9f2vHwdH\nlOW4dm9POfDQnrSgWGU0EMDwDG3momStfEmVA3bz1YBLtlm8P2mkAP5CAhGh\n7GCO9JCk5q9wUeyWNvphTZw9pY2L17ZhxRoRtWxD8gaWxBGoE/KctgsemRBz\nWr35fCGAd4j7bFcIcgb91/rrO7DoI6F1v/nw/lYccItIn35UdDDBE0ksCcTK\n75q1qiPnT2DiwH/yqIv0jLYjYLTt8VnqEBRdqfPU0HogkqJDpOpcV7KqQxRD\nUPeF3q4nFecM7VBc0ha4m34qJ1jH8U/glWZUUKvqQAvrZyWGcy7JmuXqhnri\n//pz\r\n=jMH5\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDjrqL+cTHrUWEMMSlu9sUtTeRX3AZQOAHBB0k+GbSr/AIgKApwfzb50cDFWZ93f1bfzdWE0ie1UZYlfFftlYvMW54="}]},"_npmUser":{"name":"bevryme","email":"us@bevry.me"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/pluginloader_4.11.0-next.1599076969.b2bd37e07fbb99f9fb3c6aedab178187c86b9bd4_1599076971127_0.6342826684916794"},"_hasShrinkwrap":false},"4.11.0-next.1599397448.8cb75bee7ab089761a5506e442f6f3d1a5cd2b44":{"name":"@bevry/pluginloader","version":"4.11.0-next.1599397448.8cb75bee7ab089761a5506e442f6f3d1a5cd2b44","description":"A class for loading, verifying, and creating plugins. Used by DocPad for years.","homepage":"https://github.com/bevry/pluginloader","license":"MIT","keywords":["bevry","docpad","export-default","loader","node","plugin","plugins","typed","types","typescript"],"badges":{"list":["travisci","npmversion","npmdownloads","daviddm","daviddmdev","---","githubsponsors","patreon","flattr","liberapay","buymeacoffee","opencollective","crypto","paypal","wishlist"],"config":{"githubSponsorsUsername":"balupton","buymeacoffeeUsername":"balupton","cryptoURL":"https://bevry.me/crypto","flattrUsername":"balupton","liberapayUsername":"bevry","opencollectiveUsername":"bevry","patreonUsername":"bevry","paypalURL":"https://bevry.me/paypal","wishlistURL":"https://bevry.me/wishlist","travisTLD":"com","githubUsername":"bevry","githubRepository":"pluginloader","githubSlug":"bevry/pluginloader","npmPackageName":"@bevry/pluginloader"}},"funding":"https://bevry.me/fund","author":{"name":"2018+ Benjamin Lupton","email":"b@lupton.cc","url":"https://balupton.com"},"maintainers":[{"email":"b@lupton.cc","name":"balupton"},{"email":"us@bevry.me","name":"bevryme"},{"email":"sumitrai96@gmail.com","name":"sumitrai"}],"contributors":[{"name":"Benjamin Lupton","email":"b@lupton.cc","url":"https://github.com/balupton"}],"bugs":{"url":"https://github.com/bevry/pluginloader/issues"},"repository":{"type":"git","url":"git+https://github.com/bevry/pluginloader.git"},"engines":{"node":">=10"},"editions":[{"description":"TypeScript source code with Import for modules","directory":"source","entry":"index.ts","tags":["typescript","import"],"engines":false},{"description":"TypeScript compiled against ESNext for Node.js 10 || 12 || 13 || 14 with Require for modules","directory":"edition-esnext","entry":"index.js","tags":["javascript","esnext","require"],"engines":{"node":"10 || 12 || 13 || 14"}},{"description":"TypeScript compiled against ESNext for Node.js with Import for modules","directory":"edition-node-esm","entry":"index.js","tags":["javascript","import"],"engines":{"node":true,"browsers":false}}],"types":"./compiled-types/","type":"module","main":"edition-esnext/index.js","exports":{"node":{"import":"./edition-node-esm/index.js","require":"./edition-esnext/index.js"}},"dependencies":{"errlop":"^3.16.0","semver":"^7.3.2","typechecker":"^7.13.0"},"devDependencies":{"@bevry/update-contributors":"^1.15.0","@typescript-eslint/eslint-plugin":"^4.0.0","@typescript-eslint/parser":"^3.9.1","assert-helpers":"^7.0.1","eslint":"^7.7.0","eslint-config-bevry":"^3.19.0","eslint-config-prettier":"^6.11.0","eslint-plugin-prettier":"^3.1.4","kava":"^5.11.0","make-deno-edition":"^1.0.0","prettier":"^2.0.5","projectz":"^2.14.0","surge":"^0.21.6","typedoc":"^0.18.0","typescript":"^4.0.2","valid-directory":"^3.0.0"},"scripts":{"our:clean":"rm -Rf ./docs ./edition* ./es2015 ./es5 ./out ./.next","our:compile":"npm run our:compile:deno && npm run our:compile:edition-esnext && npm run our:compile:edition-node-esm && npm run our:compile:types","our:compile:deno":"make-deno-edition --attempt","our:compile:edition-esnext":"tsc --module commonjs --target ESNext --outDir ./edition-esnext --project tsconfig.json && ( test ! -d edition-esnext/source || ( mv edition-esnext/source edition-temp && rm -Rf edition-esnext && mv edition-temp edition-esnext ) ) && echo '{\"type\": \"commonjs\"}' > edition-esnext/package.json","our:compile:edition-node-esm":"tsc --module ESNext --target ESNext --outDir ./edition-node-esm --project tsconfig.json && ( test ! -d edition-node-esm/source || ( mv edition-node-esm/source edition-temp && rm -Rf edition-node-esm && mv edition-temp edition-node-esm ) ) && echo '{\"type\": \"module\"}' > edition-node-esm/package.json","our:compile:types":"tsc --project tsconfig.json --emitDeclarationOnly --declaration --declarationMap --declarationDir ./compiled-types && ( test ! -d compiled-types/source || ( mv compiled-types/source edition-temp && rm -Rf compiled-types && mv edition-temp compiled-types ) )","our:deploy":"echo no need for this project","our:meta":"npm run our:meta:contributors && npm run our:meta:docs && npm run our:meta:projectz","our:meta:contributors":"update-contributors","our:meta:docs":"npm run our:meta:docs:typedoc","our:meta:docs:typedoc":"rm -Rf ./docs && typedoc --mode file --exclude '**/+(*test*|node_modules)' --excludeExternals --name \"$npm_package_name\" --readme ./README.md --out ./docs ./source","our:meta:projectz":"projectz compile","our:release":"npm run our:release:prepare && npm run our:release:check-changelog && npm run our:release:check-dirty && npm run our:release:tag && npm run our:release:push","our:release:check-changelog":"cat ./HISTORY.md | grep v$npm_package_version || (echo add a changelog entry for v$npm_package_version && exit -1)","our:release:check-dirty":"git diff --exit-code","our:release:prepare":"npm run our:clean && npm run our:compile && npm run our:test && npm run our:meta","our:release:push":"git push origin master && git push origin --tags","our:release:tag":"export MESSAGE=$(cat ./HISTORY.md | sed -n \"/## v$npm_package_version/,/##/p\" | sed 's/## //' | awk 'NR>1{print buf}{buf = $0}') && test \"$MESSAGE\" || (echo 'proper changelog entry not found' && exit -1) && git tag v$npm_package_version -am \"$MESSAGE\"","our:setup":"npm run our:setup:install","our:setup:install":"npm install","our:test":"npm run our:verify && npm test","our:verify":"npm run our:verify:directory && npm run our:verify:eslint && npm run our:verify:prettier","our:verify:directory":"valid-directory","our:verify:eslint":"eslint --fix --ignore-pattern '**/*.d.ts' --ignore-pattern '**/vendor/' --ignore-pattern '**/node_modules/' --ext .mjs,.js,.jsx,.ts,.tsx ./source","our:verify:prettier":"prettier --write .","test":"node ./edition-esnext/test.js"},"eslintConfig":{"extends":["bevry"]},"prettier":{"semi":false,"singleQuote":true},"gitHead":"8cb75bee7ab089761a5506e442f6f3d1a5cd2b44","readme":"<!-- TITLE/ -->\n\n<h1>@bevry/pluginloader</h1>\n\n<!-- /TITLE -->\n\n\n<!-- BADGES/ -->\n\n<span class=\"badge-travisci\"><a href=\"http://travis-ci.com/bevry/pluginloader\" title=\"Check this project's build status on TravisCI\"><img src=\"https://img.shields.io/travis/com/bevry/pluginloader/master.svg\" alt=\"Travis CI Build Status\" /></a></span>\n<span class=\"badge-npmversion\"><a href=\"https://npmjs.org/package/@bevry/pluginloader\" title=\"View this project on NPM\"><img src=\"https://img.shields.io/npm/v/@bevry/pluginloader.svg\" alt=\"NPM version\" /></a></span>\n<span class=\"badge-npmdownloads\"><a href=\"https://npmjs.org/package/@bevry/pluginloader\" title=\"View this project on NPM\"><img src=\"https://img.shields.io/npm/dm/@bevry/pluginloader.svg\" alt=\"NPM downloads\" /></a></span>\n<span class=\"badge-daviddm\"><a href=\"https://david-dm.org/bevry/pluginloader\" title=\"View the status of this project's dependencies on DavidDM\"><img src=\"https://img.shields.io/david/bevry/pluginloader.svg\" alt=\"Dependency Status\" /></a></span>\n<span class=\"badge-daviddmdev\"><a href=\"https://david-dm.org/bevry/pluginloader#info=devDependencies\" title=\"View the status of this project's development dependencies on DavidDM\"><img src=\"https://img.shields.io/david/dev/bevry/pluginloader.svg\" alt=\"Dev Dependency Status\" /></a></span>\n<br class=\"badge-separator\" />\n<span class=\"badge-githubsponsors\"><a href=\"https://github.com/sponsors/balupton\" title=\"Donate to this project using GitHub Sponsors\"><img src=\"https://img.shields.io/badge/github-donate-yellow.svg\" alt=\"GitHub Sponsors donate button\" /></a></span>\n<span class=\"badge-patreon\"><a href=\"https://patreon.com/bevry\" title=\"Donate to this project using Patreon\"><img src=\"https://img.shields.io/badge/patreon-donate-yellow.svg\" alt=\"Patreon donate button\" /></a></span>\n<span class=\"badge-flattr\"><a href=\"https://flattr.com/profile/balupton\" title=\"Donate to this project using Flattr\"><img src=\"https://img.shields.io/badge/flattr-donate-yellow.svg\" alt=\"Flattr donate button\" /></a></span>\n<span class=\"badge-liberapay\"><a href=\"https://liberapay.com/bevry\" title=\"Donate to this project using Liberapay\"><img src=\"https://img.shields.io/badge/liberapay-donate-yellow.svg\" alt=\"Liberapay donate button\" /></a></span>\n<span class=\"badge-buymeacoffee\"><a href=\"https://buymeacoffee.com/balupton\" title=\"Donate to this project using Buy Me A Coffee\"><img src=\"https://img.shields.io/badge/buy%20me%20a%20coffee-donate-yellow.svg\" alt=\"Buy Me A Coffee donate button\" /></a></span>\n<span class=\"badge-opencollective\"><a href=\"https://opencollective.com/bevry\" title=\"Donate to this project using Open Collective\"><img src=\"https://img.shields.io/badge/open%20collective-donate-yellow.svg\" alt=\"Open Collective donate button\" /></a></span>\n<span class=\"badge-crypto\"><a href=\"https://bevry.me/crypto\" title=\"Donate to this project using Cryptocurrency\"><img src=\"https://img.shields.io/badge/crypto-donate-yellow.svg\" alt=\"crypto donate button\" /></a></span>\n<span class=\"badge-paypal\"><a href=\"https://bevry.me/paypal\" title=\"Donate to this project using Paypal\"><img src=\"https://img.shields.io/badge/paypal-donate-yellow.svg\" alt=\"PayPal donate button\" /></a></span>\n<span class=\"badge-wishlist\"><a href=\"https://bevry.me/wishlist\" title=\"Buy an item on our wishlist for us\"><img src=\"https://img.shields.io/badge/wishlist-donate-yellow.svg\" alt=\"Wishlist browse button\" /></a></span>\n\n<!-- /BADGES -->\n\n\n<!-- DESCRIPTION/ -->\n\nA class for loading, verifying, and creating plugins. Used by DocPad for years.\n\n<!-- /DESCRIPTION -->\n\n\n## Usage\n\n[Complete API Documentation.](http://master.pluginloader.bevry.surge.sh/docs/globals.html)\n\n### Basics\n\nCreate your project:\n\n1. `mkdir my-project`\n1. `cd my-project`\n\nCreate your plugin:\n\n1. `mkdir myplugin`\n1. `cd myplugin`\n1. `npm init`\n1. `index.js` to:\n\n    ```javascript\n    module.exports = function (BasePlugin) {\n        return class MyPlugin extends BasePlugin {\n            constructor(...args) {\n                super(...args)\n                console.log('hello from my plugin')\n            }\n        }\n    }\n    ```\n\n1. `cd ..`\n\nCreate your plugin loader:\n\n1. `mkdir myapp`\n1. `cd myapp`\n1. `npm init`\n1. `index.js` to:\n\n    ```javascript\n    import PluginLoader from '@bevry/pluginloader'\n\n    class BasePlugin {\n        constructor() {\n            console.log('hello from base plugin')\n        }\n    }\n\n    const pluginLoader = new PluginLoader({\n        BasePlugin,\n        pluginPath: require('path').resolve(__dirname, '..', 'myplugin'),\n    })\n    ```\n\n1. `cd ..`\n\nRun the project:\n\n1. `node myapp/index.js`\n\n### Ecosystem\n\n-   [pluginclerk](https://github.com/bevry/pluginclerk) a project for fetching compatible plugins from the npm registry\n-   [docpad-baseplugin](https://github.com/docpad/docpad-baseplugin) the BasePlugin class that DocPad uses\n-   [docpad-plugintester](https://github.com/docpad/docpad-plugintester) testing helpers for DocPad plugins\n\n<!-- INSTALL/ -->\n\n<h2>Install</h2>\n\n<a href=\"https://npmjs.com\" title=\"npm is a package manager for javascript\"><h3>npm</h3></a>\n<ul>\n<li>Install: <code>npm install --save @bevry/pluginloader</code></li>\n<li>Import: <code>import pkg from ('@bevry/pluginloader')</code></li>\n<li>Require: <code>const pkg = require('@bevry/pluginloader').default</code></li>\n</ul>\n\n<h3><a href=\"https://editions.bevry.me\" title=\"Editions are the best way to produce and consume packages you care about.\">Editions</a></h3>\n\n<p>This package is published with the following editions:</p>\n\n<ul><li><code>@bevry/pluginloader/source/index.ts</code> is <a href=\"https://www.typescriptlang.org/\" title=\"TypeScript is a typed superset of JavaScript that compiles to plain JavaScript. \">TypeScript</a> source code with <a href=\"https://babeljs.io/docs/learn-es2015/#modules\" title=\"ECMAScript Modules\">Import</a> for modules</li>\n<li><code>@bevry/pluginloader</code> aliases <code>@bevry/pluginloader/edition-esnext/index.js</code></li>\n<li><code>@bevry/pluginloader/edition-esnext/index.js</code> is <a href=\"https://www.typescriptlang.org/\" title=\"TypeScript is a typed superset of JavaScript that compiles to plain JavaScript. \">TypeScript</a> compiled against <a href=\"https://en.wikipedia.org/wiki/ECMAScript#ES.Next\" title=\"ECMAScript Next\">ESNext</a> for <a href=\"https://nodejs.org\" title=\"Node.js is a JavaScript runtime built on Chrome's V8 JavaScript engine\">Node.js</a> 10 || 12 || 13 || 14 with <a href=\"https://nodejs.org/dist/latest-v5.x/docs/api/modules.html\" title=\"Node/CJS Modules\">Require</a> for modules</li>\n<li><code>@bevry/pluginloader/edition-node-esm/index.js</code> is <a href=\"https://www.typescriptlang.org/\" title=\"TypeScript is a typed superset of JavaScript that compiles to plain JavaScript. \">TypeScript</a> compiled against <a href=\"https://en.wikipedia.org/wiki/ECMAScript#ES.Next\" title=\"ECMAScript Next\">ESNext</a> for <a href=\"https://nodejs.org\" title=\"Node.js is a JavaScript runtime built on Chrome's V8 JavaScript engine\">Node.js</a> with <a href=\"https://babeljs.io/docs/learn-es2015/#modules\" title=\"ECMAScript Modules\">Import</a> for modules</li></ul>\n\n<!-- /INSTALL -->\n\n\n<!-- HISTORY/ -->\n\n<h2>History</h2>\n\n<a href=\"https://github.com/bevry/pluginloader/blob/master/HISTORY.md#files\">Discover the release history by heading on over to the <code>HISTORY.md</code> file.</a>\n\n<!-- /HISTORY -->\n\n\n<!-- CONTRIBUTE/ -->\n\n<h2>Contribute</h2>\n\n<a href=\"https://github.com/bevry/pluginloader/blob/master/CONTRIBUTING.md#files\">Discover how you can contribute by heading on over to the <code>CONTRIBUTING.md</code> file.</a>\n\n<!-- /CONTRIBUTE -->\n\n\n<!-- BACKERS/ -->\n\n<h2>Backers</h2>\n\n<h3>Maintainers</h3>\n\nThese amazing people are maintaining this project:\n\n<ul><li><a href=\"https://balupton.com\">Benjamin Lupton</a> — <a href=\"https://github.com/bevry/pluginloader/commits?author=balupton\" title=\"View the GitHub contributions of Benjamin Lupton on repository bevry/pluginloader\">view contributions</a></li></ul>\n\n<h3>Sponsors</h3>\n\nNo sponsors yet! Will you be the first?\n\n<span class=\"badge-githubsponsors\"><a href=\"https://github.com/sponsors/balupton\" title=\"Donate to this project using GitHub Sponsors\"><img src=\"https://img.shields.io/badge/github-donate-yellow.svg\" alt=\"GitHub Sponsors donate button\" /></a></span>\n<span class=\"badge-patreon\"><a href=\"https://patreon.com/bevry\" title=\"Donate to this project using Patreon\"><img src=\"https://img.shields.io/badge/patreon-donate-yellow.svg\" alt=\"Patreon donate button\" /></a></span>\n<span class=\"badge-flattr\"><a href=\"https://flattr.com/profile/balupton\" title=\"Donate to this project using Flattr\"><img src=\"https://img.shields.io/badge/flattr-donate-yellow.svg\" alt=\"Flattr donate button\" /></a></span>\n<span class=\"badge-liberapay\"><a href=\"https://liberapay.com/bevry\" title=\"Donate to this project using Liberapay\"><img src=\"https://img.shields.io/badge/liberapay-donate-yellow.svg\" alt=\"Liberapay donate button\" /></a></span>\n<span class=\"badge-buymeacoffee\"><a href=\"https://buymeacoffee.com/balupton\" title=\"Donate to this project using Buy Me A Coffee\"><img src=\"https://img.shields.io/badge/buy%20me%20a%20coffee-donate-yellow.svg\" alt=\"Buy Me A Coffee donate button\" /></a></span>\n<span class=\"badge-opencollective\"><a href=\"https://opencollective.com/bevry\" title=\"Donate to this project using Open Collective\"><img src=\"https://img.shields.io/badge/open%20collective-donate-yellow.svg\" alt=\"Open Collective donate button\" /></a></span>\n<span class=\"badge-crypto\"><a href=\"https://bevry.me/crypto\" title=\"Donate to this project using Cryptocurrency\"><img src=\"https://img.shields.io/badge/crypto-donate-yellow.svg\" alt=\"crypto donate button\" /></a></span>\n<span class=\"badge-paypal\"><a href=\"https://bevry.me/paypal\" title=\"Donate to this project using Paypal\"><img src=\"https://img.shields.io/badge/paypal-donate-yellow.svg\" alt=\"PayPal donate button\" /></a></span>\n<span class=\"badge-wishlist\"><a href=\"https://bevry.me/wishlist\" title=\"Buy an item on our wishlist for us\"><img src=\"https://img.shields.io/badge/wishlist-donate-yellow.svg\" alt=\"Wishlist browse button\" /></a></span>\n\n<h3>Contributors</h3>\n\nThese amazing people have contributed code to this project:\n\n<ul><li><a href=\"https://balupton.com\">Benjamin Lupton</a> — <a href=\"https://github.com/bevry/pluginloader/commits?author=balupton\" title=\"View the GitHub contributions of Benjamin Lupton on repository bevry/pluginloader\">view contributions</a></li></ul>\n\n<a href=\"https://github.com/bevry/pluginloader/blob/master/CONTRIBUTING.md#files\">Discover how you can contribute by heading on over to the <code>CONTRIBUTING.md</code> file.</a>\n\n<!-- /BACKERS -->\n\n\n<!-- LICENSE/ -->\n\n<h2>License</h2>\n\nUnless stated otherwise all works are:\n\n<ul><li>Copyright &copy; 2018+ <a href=\"https://balupton.com\">Benjamin Lupton</a></li></ul>\n\nand licensed under:\n\n<ul><li><a href=\"http://spdx.org/licenses/MIT.html\">MIT License</a></li></ul>\n\n<!-- /LICENSE -->\n","readmeFilename":"README.md","_id":"@bevry/pluginloader@4.11.0-next.1599397448.8cb75bee7ab089761a5506e442f6f3d1a5cd2b44","_nodeVersion":"14.9.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-3czd2ZNFSUIRr1arIlvDM2J5rKUniHk2aFabuCNBrBpGFnMWtown0tbtGDDi+BENzlDZycB0fNIYMA9OQVCMPA==","shasum":"7fec83049649239c018cd4a35c2d2970f48af085","tarball":"https://registry.npmjs.org/@bevry/pluginloader/-/pluginloader-4.11.0-next.1599397448.8cb75bee7ab089761a5506e442f6f3d1a5cd2b44.tgz","fileCount":13,"unpackedSize":53683,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfVN5KCRA9TVsSAnZWagAA1D8P/jSVxJGBHCrYIW9l7k0b\n7xyQ5E1Or+dVQZUkE7XdjZ61J6rhP9Biu+bmXdil+EOw/PkBUCMQguvrwdtO\nyhvAu+HF+ZEKm0RfSvwLMj29x7UMahTbXL4Kk/iUm6AnUWvqXqhT/FVADKow\nHHQzpG0t66cE16SxTPtz0npVETkbUt0weJFqwEuHIgJYjqZjycQ8m6vWpXqK\n6jaDlE80j3TVnGUjUNySivkxKLObxPf9cWzNcn/C+Y0v4Jep3wUx8ysGV2xj\n5GNzozyIibKJJEKxnSGds07Q5SerkeT5hirL1IDzoKNFrwlsbHZem1i28Jrh\n4XLE/X6/qfVEaVip3PSFSOxGmYYUdhKgjaYxr0Hq/MCs++FSi8u72pKOpC3T\nqsQ89gSJfuWhimLic236+HrLFCMtf2VJ17bUTY1x6Nr/NHMTUxFAz99q7xjU\nY93GG4/0zXKtNlxBfisv/5W7jW3KqJ9SiGxc2H/oKnEGlBzUsWjLXkwSaWNI\nXB32eT+qzy/VkeHz3qkQMGJp/bJvLutrb983d5wrLvSwmRkp1VcKvJ21F3QA\nWz1Jc2N+6cGqkBpKhWoUraVJ9ukbmrHuK9ryW9VPEAADPN4jUHM27Y+AtOjC\nWoqMmP7GLSwrc1/uaZriEXqeUSCC85Fos4ssYNRwKynd1vFOovTtautQMMhm\ncZbk\r\n=jHaT\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIC/r7sBmtqavcJ6EKYEz0Jh4Bpju5I/0QNEyc9ZX7pDfAiEAsUiZbWAbym9KYlUT25XMSdLOMtsI2xlfipXL+LOS7FQ="}]},"_npmUser":{"name":"bevryme","email":"us@bevry.me"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/pluginloader_4.11.0-next.1599397448.8cb75bee7ab089761a5506e442f6f3d1a5cd2b44_1599397449742_0.318640830546546"},"_hasShrinkwrap":false},"4.11.0-next.1599399196.086e7d152a6f741a39652ed709817d94bebe8472":{"name":"@bevry/pluginloader","version":"4.11.0-next.1599399196.086e7d152a6f741a39652ed709817d94bebe8472","description":"A class for loading, verifying, and creating plugins. Used by DocPad for years.","homepage":"https://github.com/bevry/pluginloader","license":"MIT","keywords":["bevry","docpad","export-default","loader","node","plugin","plugins","typed","types","typescript"],"badges":{"list":["travisci","npmversion","npmdownloads","daviddm","daviddmdev","---","githubsponsors","patreon","flattr","liberapay","buymeacoffee","opencollective","crypto","paypal","wishlist"],"config":{"githubSponsorsUsername":"balupton","buymeacoffeeUsername":"balupton","cryptoURL":"https://bevry.me/crypto","flattrUsername":"balupton","liberapayUsername":"bevry","opencollectiveUsername":"bevry","patreonUsername":"bevry","paypalURL":"https://bevry.me/paypal","wishlistURL":"https://bevry.me/wishlist","travisTLD":"com","githubUsername":"bevry","githubRepository":"pluginloader","githubSlug":"bevry/pluginloader","npmPackageName":"@bevry/pluginloader"}},"funding":"https://bevry.me/fund","author":{"name":"2018+ Benjamin Lupton","email":"b@lupton.cc","url":"https://balupton.com"},"maintainers":[{"email":"b@lupton.cc","name":"balupton"},{"email":"us@bevry.me","name":"bevryme"},{"email":"sumitrai96@gmail.com","name":"sumitrai"}],"contributors":[{"name":"Benjamin Lupton","email":"b@lupton.cc","url":"https://github.com/balupton"}],"bugs":{"url":"https://github.com/bevry/pluginloader/issues"},"repository":{"type":"git","url":"git+https://github.com/bevry/pluginloader.git"},"engines":{"node":">=10"},"editions":[{"description":"TypeScript source code with Import for modules","directory":"source","entry":"index.ts","tags":["typescript","import"],"engines":false},{"description":"TypeScript compiled against ESNext for Node.js 10 || 12 || 13 || 14 with Require for modules","directory":"edition-esnext","entry":"index.js","tags":["javascript","esnext","require"],"engines":{"node":"10 || 12 || 13 || 14"}},{"description":"TypeScript compiled against ESNext for Node.js with Import for modules","directory":"edition-node-esm","entry":"index.js","tags":["javascript","import"],"engines":{"node":true,"browsers":false}}],"types":"./compiled-types/","type":"module","main":"edition-esnext/index.js","exports":{"node":{"import":"./edition-node-esm/index.js","require":"./edition-esnext/index.js"}},"dependencies":{"errlop":"^3.16.0","semver":"^7.3.2","typechecker":"^7.13.0"},"devDependencies":{"@bevry/update-contributors":"^1.15.0","@typescript-eslint/eslint-plugin":"^4.0.0","@typescript-eslint/parser":"^3.9.1","assert-helpers":"^7.0.1","eslint":"^7.7.0","eslint-config-bevry":"^3.19.0","eslint-config-prettier":"^6.11.0","eslint-plugin-prettier":"^3.1.4","kava":"^5.11.0","make-deno-edition":"^1.0.0","prettier":"^2.0.5","projectz":"^2.14.0","surge":"^0.21.6","typedoc":"^0.18.0","typescript":"^4.0.2","valid-directory":"^3.0.0"},"scripts":{"our:clean":"rm -Rf ./docs ./edition* ./es2015 ./es5 ./out ./.next","our:compile":"npm run our:compile:deno && npm run our:compile:edition-esnext && npm run our:compile:edition-node-esm && npm run our:compile:types","our:compile:deno":"make-deno-edition --attempt","our:compile:edition-esnext":"tsc --module commonjs --target ESNext --outDir ./edition-esnext --project tsconfig.json && ( test ! -d edition-esnext/source || ( mv edition-esnext/source edition-temp && rm -Rf edition-esnext && mv edition-temp edition-esnext ) ) && echo '{\"type\": \"commonjs\"}' > edition-esnext/package.json","our:compile:edition-node-esm":"tsc --module ESNext --target ESNext --outDir ./edition-node-esm --project tsconfig.json && ( test ! -d edition-node-esm/source || ( mv edition-node-esm/source edition-temp && rm -Rf edition-node-esm && mv edition-temp edition-node-esm ) ) && echo '{\"type\": \"module\"}' > edition-node-esm/package.json","our:compile:types":"tsc --project tsconfig.json --emitDeclarationOnly --declaration --declarationMap --declarationDir ./compiled-types && ( test ! -d compiled-types/source || ( mv compiled-types/source edition-temp && rm -Rf compiled-types && mv edition-temp compiled-types ) )","our:deploy":"echo no need for this project","our:meta":"npm run our:meta:contributors && npm run our:meta:docs && npm run our:meta:projectz","our:meta:contributors":"update-contributors","our:meta:docs":"npm run our:meta:docs:typedoc","our:meta:docs:typedoc":"rm -Rf ./docs && typedoc --mode file --exclude '**/+(*test*|node_modules)' --excludeExternals --name \"$npm_package_name\" --readme ./README.md --out ./docs ./source","our:meta:projectz":"projectz compile","our:release":"npm run our:release:prepare && npm run our:release:check-changelog && npm run our:release:check-dirty && npm run our:release:tag && npm run our:release:push","our:release:check-changelog":"cat ./HISTORY.md | grep v$npm_package_version || (echo add a changelog entry for v$npm_package_version && exit -1)","our:release:check-dirty":"git diff --exit-code","our:release:prepare":"npm run our:clean && npm run our:compile && npm run our:test && npm run our:meta","our:release:push":"git push origin master && git push origin --tags","our:release:tag":"export MESSAGE=$(cat ./HISTORY.md | sed -n \"/## v$npm_package_version/,/##/p\" | sed 's/## //' | awk 'NR>1{print buf}{buf = $0}') && test \"$MESSAGE\" || (echo 'proper changelog entry not found' && exit -1) && git tag v$npm_package_version -am \"$MESSAGE\"","our:setup":"npm run our:setup:install","our:setup:install":"npm install","our:test":"npm run our:verify && npm test","our:verify":"npm run our:verify:directory && npm run our:verify:eslint && npm run our:verify:prettier","our:verify:directory":"valid-directory","our:verify:eslint":"eslint --fix --ignore-pattern '**/*.d.ts' --ignore-pattern '**/vendor/' --ignore-pattern '**/node_modules/' --ext .mjs,.js,.jsx,.ts,.tsx ./source","our:verify:prettier":"prettier --write .","test":"node ./edition-esnext/test.js"},"eslintConfig":{"extends":["bevry"]},"prettier":{"semi":false,"singleQuote":true},"gitHead":"086e7d152a6f741a39652ed709817d94bebe8472","readme":"<!-- TITLE/ -->\n\n<h1>@bevry/pluginloader</h1>\n\n<!-- /TITLE -->\n\n\n<!-- BADGES/ -->\n\n<span class=\"badge-travisci\"><a href=\"http://travis-ci.com/bevry/pluginloader\" title=\"Check this project's build status on TravisCI\"><img src=\"https://img.shields.io/travis/com/bevry/pluginloader/master.svg\" alt=\"Travis CI Build Status\" /></a></span>\n<span class=\"badge-npmversion\"><a href=\"https://npmjs.org/package/@bevry/pluginloader\" title=\"View this project on NPM\"><img src=\"https://img.shields.io/npm/v/@bevry/pluginloader.svg\" alt=\"NPM version\" /></a></span>\n<span class=\"badge-npmdownloads\"><a href=\"https://npmjs.org/package/@bevry/pluginloader\" title=\"View this project on NPM\"><img src=\"https://img.shields.io/npm/dm/@bevry/pluginloader.svg\" alt=\"NPM downloads\" /></a></span>\n<span class=\"badge-daviddm\"><a href=\"https://david-dm.org/bevry/pluginloader\" title=\"View the status of this project's dependencies on DavidDM\"><img src=\"https://img.shields.io/david/bevry/pluginloader.svg\" alt=\"Dependency Status\" /></a></span>\n<span class=\"badge-daviddmdev\"><a href=\"https://david-dm.org/bevry/pluginloader#info=devDependencies\" title=\"View the status of this project's development dependencies on DavidDM\"><img src=\"https://img.shields.io/david/dev/bevry/pluginloader.svg\" alt=\"Dev Dependency Status\" /></a></span>\n<br class=\"badge-separator\" />\n<span class=\"badge-githubsponsors\"><a href=\"https://github.com/sponsors/balupton\" title=\"Donate to this project using GitHub Sponsors\"><img src=\"https://img.shields.io/badge/github-donate-yellow.svg\" alt=\"GitHub Sponsors donate button\" /></a></span>\n<span class=\"badge-patreon\"><a href=\"https://patreon.com/bevry\" title=\"Donate to this project using Patreon\"><img src=\"https://img.shields.io/badge/patreon-donate-yellow.svg\" alt=\"Patreon donate button\" /></a></span>\n<span class=\"badge-flattr\"><a href=\"https://flattr.com/profile/balupton\" title=\"Donate to this project using Flattr\"><img src=\"https://img.shields.io/badge/flattr-donate-yellow.svg\" alt=\"Flattr donate button\" /></a></span>\n<span class=\"badge-liberapay\"><a href=\"https://liberapay.com/bevry\" title=\"Donate to this project using Liberapay\"><img src=\"https://img.shields.io/badge/liberapay-donate-yellow.svg\" alt=\"Liberapay donate button\" /></a></span>\n<span class=\"badge-buymeacoffee\"><a href=\"https://buymeacoffee.com/balupton\" title=\"Donate to this project using Buy Me A Coffee\"><img src=\"https://img.shields.io/badge/buy%20me%20a%20coffee-donate-yellow.svg\" alt=\"Buy Me A Coffee donate button\" /></a></span>\n<span class=\"badge-opencollective\"><a href=\"https://opencollective.com/bevry\" title=\"Donate to this project using Open Collective\"><img src=\"https://img.shields.io/badge/open%20collective-donate-yellow.svg\" alt=\"Open Collective donate button\" /></a></span>\n<span class=\"badge-crypto\"><a href=\"https://bevry.me/crypto\" title=\"Donate to this project using Cryptocurrency\"><img src=\"https://img.shields.io/badge/crypto-donate-yellow.svg\" alt=\"crypto donate button\" /></a></span>\n<span class=\"badge-paypal\"><a href=\"https://bevry.me/paypal\" title=\"Donate to this project using Paypal\"><img src=\"https://img.shields.io/badge/paypal-donate-yellow.svg\" alt=\"PayPal donate button\" /></a></span>\n<span class=\"badge-wishlist\"><a href=\"https://bevry.me/wishlist\" title=\"Buy an item on our wishlist for us\"><img src=\"https://img.shields.io/badge/wishlist-donate-yellow.svg\" alt=\"Wishlist browse button\" /></a></span>\n\n<!-- /BADGES -->\n\n\n<!-- DESCRIPTION/ -->\n\nA class for loading, verifying, and creating plugins. Used by DocPad for years.\n\n<!-- /DESCRIPTION -->\n\n\n## Usage\n\n[Complete API Documentation.](http://master.pluginloader.bevry.surge.sh/docs/globals.html)\n\n### Basics\n\nCreate your project:\n\n1. `mkdir my-project`\n1. `cd my-project`\n\nCreate your plugin:\n\n1. `mkdir myplugin`\n1. `cd myplugin`\n1. `npm init`\n1. `index.js` to:\n\n    ```javascript\n    module.exports = function (BasePlugin) {\n        return class MyPlugin extends BasePlugin {\n            constructor(...args) {\n                super(...args)\n                console.log('hello from my plugin')\n            }\n        }\n    }\n    ```\n\n1. `cd ..`\n\nCreate your plugin loader:\n\n1. `mkdir myapp`\n1. `cd myapp`\n1. `npm init`\n1. `index.js` to:\n\n    ```javascript\n    import PluginLoader from '@bevry/pluginloader'\n\n    class BasePlugin {\n        constructor() {\n            console.log('hello from base plugin')\n        }\n    }\n\n    const pluginLoader = new PluginLoader({\n        BasePlugin,\n        pluginPath: require('path').resolve(__dirname, '..', 'myplugin'),\n    })\n    ```\n\n1. `cd ..`\n\nRun the project:\n\n1. `node myapp/index.js`\n\n### Ecosystem\n\n-   [pluginclerk](https://github.com/bevry/pluginclerk) a project for fetching compatible plugins from the npm registry\n-   [docpad-baseplugin](https://github.com/docpad/docpad-baseplugin) the BasePlugin class that DocPad uses\n-   [docpad-plugintester](https://github.com/docpad/docpad-plugintester) testing helpers for DocPad plugins\n\n<!-- INSTALL/ -->\n\n<h2>Install</h2>\n\n<a href=\"https://npmjs.com\" title=\"npm is a package manager for javascript\"><h3>npm</h3></a>\n<ul>\n<li>Install: <code>npm install --save @bevry/pluginloader</code></li>\n<li>Import: <code>import pkg from ('@bevry/pluginloader')</code></li>\n<li>Require: <code>const pkg = require('@bevry/pluginloader').default</code></li>\n</ul>\n\n<h3><a href=\"https://editions.bevry.me\" title=\"Editions are the best way to produce and consume packages you care about.\">Editions</a></h3>\n\n<p>This package is published with the following editions:</p>\n\n<ul><li><code>@bevry/pluginloader/source/index.ts</code> is <a href=\"https://www.typescriptlang.org/\" title=\"TypeScript is a typed superset of JavaScript that compiles to plain JavaScript. \">TypeScript</a> source code with <a href=\"https://babeljs.io/docs/learn-es2015/#modules\" title=\"ECMAScript Modules\">Import</a> for modules</li>\n<li><code>@bevry/pluginloader</code> aliases <code>@bevry/pluginloader/edition-esnext/index.js</code></li>\n<li><code>@bevry/pluginloader/edition-esnext/index.js</code> is <a href=\"https://www.typescriptlang.org/\" title=\"TypeScript is a typed superset of JavaScript that compiles to plain JavaScript. \">TypeScript</a> compiled against <a href=\"https://en.wikipedia.org/wiki/ECMAScript#ES.Next\" title=\"ECMAScript Next\">ESNext</a> for <a href=\"https://nodejs.org\" title=\"Node.js is a JavaScript runtime built on Chrome's V8 JavaScript engine\">Node.js</a> 10 || 12 || 13 || 14 with <a href=\"https://nodejs.org/dist/latest-v5.x/docs/api/modules.html\" title=\"Node/CJS Modules\">Require</a> for modules</li>\n<li><code>@bevry/pluginloader/edition-node-esm/index.js</code> is <a href=\"https://www.typescriptlang.org/\" title=\"TypeScript is a typed superset of JavaScript that compiles to plain JavaScript. \">TypeScript</a> compiled against <a href=\"https://en.wikipedia.org/wiki/ECMAScript#ES.Next\" title=\"ECMAScript Next\">ESNext</a> for <a href=\"https://nodejs.org\" title=\"Node.js is a JavaScript runtime built on Chrome's V8 JavaScript engine\">Node.js</a> with <a href=\"https://babeljs.io/docs/learn-es2015/#modules\" title=\"ECMAScript Modules\">Import</a> for modules</li></ul>\n\n<!-- /INSTALL -->\n\n\n<!-- HISTORY/ -->\n\n<h2>History</h2>\n\n<a href=\"https://github.com/bevry/pluginloader/blob/master/HISTORY.md#files\">Discover the release history by heading on over to the <code>HISTORY.md</code> file.</a>\n\n<!-- /HISTORY -->\n\n\n<!-- CONTRIBUTE/ -->\n\n<h2>Contribute</h2>\n\n<a href=\"https://github.com/bevry/pluginloader/blob/master/CONTRIBUTING.md#files\">Discover how you can contribute by heading on over to the <code>CONTRIBUTING.md</code> file.</a>\n\n<!-- /CONTRIBUTE -->\n\n\n<!-- BACKERS/ -->\n\n<h2>Backers</h2>\n\n<h3>Maintainers</h3>\n\nThese amazing people are maintaining this project:\n\n<ul><li><a href=\"https://balupton.com\">Benjamin Lupton</a> — <a href=\"https://github.com/bevry/pluginloader/commits?author=balupton\" title=\"View the GitHub contributions of Benjamin Lupton on repository bevry/pluginloader\">view contributions</a></li></ul>\n\n<h3>Sponsors</h3>\n\nNo sponsors yet! Will you be the first?\n\n<span class=\"badge-githubsponsors\"><a href=\"https://github.com/sponsors/balupton\" title=\"Donate to this project using GitHub Sponsors\"><img src=\"https://img.shields.io/badge/github-donate-yellow.svg\" alt=\"GitHub Sponsors donate button\" /></a></span>\n<span class=\"badge-patreon\"><a href=\"https://patreon.com/bevry\" title=\"Donate to this project using Patreon\"><img src=\"https://img.shields.io/badge/patreon-donate-yellow.svg\" alt=\"Patreon donate button\" /></a></span>\n<span class=\"badge-flattr\"><a href=\"https://flattr.com/profile/balupton\" title=\"Donate to this project using Flattr\"><img src=\"https://img.shields.io/badge/flattr-donate-yellow.svg\" alt=\"Flattr donate button\" /></a></span>\n<span class=\"badge-liberapay\"><a href=\"https://liberapay.com/bevry\" title=\"Donate to this project using Liberapay\"><img src=\"https://img.shields.io/badge/liberapay-donate-yellow.svg\" alt=\"Liberapay donate button\" /></a></span>\n<span class=\"badge-buymeacoffee\"><a href=\"https://buymeacoffee.com/balupton\" title=\"Donate to this project using Buy Me A Coffee\"><img src=\"https://img.shields.io/badge/buy%20me%20a%20coffee-donate-yellow.svg\" alt=\"Buy Me A Coffee donate button\" /></a></span>\n<span class=\"badge-opencollective\"><a href=\"https://opencollective.com/bevry\" title=\"Donate to this project using Open Collective\"><img src=\"https://img.shields.io/badge/open%20collective-donate-yellow.svg\" alt=\"Open Collective donate button\" /></a></span>\n<span class=\"badge-crypto\"><a href=\"https://bevry.me/crypto\" title=\"Donate to this project using Cryptocurrency\"><img src=\"https://img.shields.io/badge/crypto-donate-yellow.svg\" alt=\"crypto donate button\" /></a></span>\n<span class=\"badge-paypal\"><a href=\"https://bevry.me/paypal\" title=\"Donate to this project using Paypal\"><img src=\"https://img.shields.io/badge/paypal-donate-yellow.svg\" alt=\"PayPal donate button\" /></a></span>\n<span class=\"badge-wishlist\"><a href=\"https://bevry.me/wishlist\" title=\"Buy an item on our wishlist for us\"><img src=\"https://img.shields.io/badge/wishlist-donate-yellow.svg\" alt=\"Wishlist browse button\" /></a></span>\n\n<h3>Contributors</h3>\n\nThese amazing people have contributed code to this project:\n\n<ul><li><a href=\"https://balupton.com\">Benjamin Lupton</a> — <a href=\"https://github.com/bevry/pluginloader/commits?author=balupton\" title=\"View the GitHub contributions of Benjamin Lupton on repository bevry/pluginloader\">view contributions</a></li></ul>\n\n<a href=\"https://github.com/bevry/pluginloader/blob/master/CONTRIBUTING.md#files\">Discover how you can contribute by heading on over to the <code>CONTRIBUTING.md</code> file.</a>\n\n<!-- /BACKERS -->\n\n\n<!-- LICENSE/ -->\n\n<h2>License</h2>\n\nUnless stated otherwise all works are:\n\n<ul><li>Copyright &copy; 2018+ <a href=\"https://balupton.com\">Benjamin Lupton</a></li></ul>\n\nand licensed under:\n\n<ul><li><a href=\"http://spdx.org/licenses/MIT.html\">MIT License</a></li></ul>\n\n<!-- /LICENSE -->\n","readmeFilename":"README.md","_id":"@bevry/pluginloader@4.11.0-next.1599399196.086e7d152a6f741a39652ed709817d94bebe8472","_nodeVersion":"14.9.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-KvZMCbunT11mcdn64GMrsAchm0TXWVddZ2ZJpypX36SynFu9OUlN67LNJkCEGU0yljyFSIF7zrActpfAP2gKVQ==","shasum":"ec3b7979e200e9d7a9b8385b16b011440328aa3c","tarball":"https://registry.npmjs.org/@bevry/pluginloader/-/pluginloader-4.11.0-next.1599399196.086e7d152a6f741a39652ed709817d94bebe8472.tgz","fileCount":13,"unpackedSize":53683,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfVOUeCRA9TVsSAnZWagAAUE8P/A+hIJai1hLT8bsGs6l7\nnbV7pZht66vwIZNFQuRv1SvRlt5V4iM4SEKQi+oRgWuO9GI22Ql+C1du+SQR\ncUK8U2b+p0VSOJD5C5bE1NL18DyMRsTJxqcftL7yGdKGpaXC+I8ru/uXjOaQ\nx6+mfmwnbQvNrU1HfkaQur+Drf5VgjwEH/YKldGBg9S+lqyZq9tB8ZgGx+lg\neuKaqcadKwMcJurpRrQvHLzZzKprXmce1rXQLseYGwn8P0qJLLMBtioPprDc\nVBGNNGPdyttlCXhUhi9nWrNrPTIf3bQDJ7Lb1odW6b5AgLG/K5x1OglEEKmC\nTY3PQLZWBD70OPXMlnmGCXFsK+UGXBzth5WudCPhG0CUzkJVgJ7kvfYig/Ap\np/RnpPLDoX49UwLmVvGfPynmI7lxfpbj+CSO31nrlLQRD2FBhsdDL25crNDp\nuvJoZW/BL0oeZobEnGu64/FT8sH87xYuHAtC4wRSC7sjPT8JOFYems2/1bKH\no5N61kT04s0yXWBWybG93laUiuFjOb/kShuA7Lli0IiG/FnsbK4+1Uo2OSYn\nrVqL7E4A1PiiY5FOhfxh9XjBsV+G5evryocxS9vNCx5RrkR1GU20kdEVKFuP\nPiycicAGD913qb8XeMr+0q/brXequGa/LsQG0EIPe2V2ImRiU+cGxeSaqkiz\n5U8Z\r\n=AaVo\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIChsXU5SYodNo7VibLS1pHpnNaWDucLTeKaqRO//NFb1AiEAoDMcmxTl8g1K22f6iFaFt3RfHyFAj7O/ZRnHI73NECY="}]},"_npmUser":{"name":"bevryme","email":"us@bevry.me"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/pluginloader_4.11.0-next.1599399196.086e7d152a6f741a39652ed709817d94bebe8472_1599399198074_0.7557667027302408"},"_hasShrinkwrap":false},"4.11.0-next.1599998859.7be69c8a5dbf97d725d33920052e65e1cddcd97b":{"name":"@bevry/pluginloader","version":"4.11.0-next.1599998859.7be69c8a5dbf97d725d33920052e65e1cddcd97b","description":"A class for loading, verifying, and creating plugins. Used by DocPad for years.","homepage":"https://github.com/bevry/pluginloader","license":"MIT","keywords":["bevry","docpad","export-default","loader","node","plugin","plugins","typed","types","typescript"],"badges":{"list":["travisci","npmversion","npmdownloads","daviddm","daviddmdev","---","githubsponsors","patreon","flattr","liberapay","buymeacoffee","opencollective","crypto","paypal","wishlist"],"config":{"githubSponsorsUsername":"balupton","buymeacoffeeUsername":"balupton","cryptoURL":"https://bevry.me/crypto","flattrUsername":"balupton","liberapayUsername":"bevry","opencollectiveUsername":"bevry","patreonUsername":"bevry","paypalURL":"https://bevry.me/paypal","wishlistURL":"https://bevry.me/wishlist","travisTLD":"com","githubUsername":"bevry","githubRepository":"pluginloader","githubSlug":"bevry/pluginloader","npmPackageName":"@bevry/pluginloader"}},"funding":"https://bevry.me/fund","author":{"name":"2018+ Benjamin Lupton","email":"b@lupton.cc","url":"https://balupton.com"},"maintainers":[{"name":"sumitrai","email":"sumitrai96@gmail.com"},{"name":"bevryme","email":"us@bevry.me"},{"name":"balupton","email":"b@lupton.cc"}],"contributors":[{"name":"Benjamin Lupton","email":"b@lupton.cc","url":"https://github.com/balupton"}],"bugs":{"url":"https://github.com/bevry/pluginloader/issues"},"repository":{"type":"git","url":"git+https://github.com/bevry/pluginloader.git"},"engines":{"node":">=10"},"editions":[{"description":"TypeScript source code with Import for modules","directory":"source","entry":"index.ts","tags":["typescript","import"],"engines":false},{"description":"TypeScript compiled against ESNext for Node.js 10 || 12 || 13 || 14 with Require for modules","directory":"edition-esnext","entry":"index.js","tags":["javascript","esnext","require"],"engines":{"node":"10 || 12 || 13 || 14"}},{"description":"TypeScript compiled against ESNext for Node.js with Import for modules","directory":"edition-node-esm","entry":"index.js","tags":["javascript","import"],"engines":{"node":true,"browsers":false}}],"types":"./compiled-types/","type":"module","main":"edition-esnext/index.js","exports":{"node":{"import":"./edition-node-esm/index.js","require":"./edition-esnext/index.js"}},"dependencies":{"errlop":"^3.16.0","semver":"^7.3.2","typechecker":"^7.13.0"},"devDependencies":{"@bevry/update-contributors":"^1.15.0","@typescript-eslint/eslint-plugin":"^4.0.0","@typescript-eslint/parser":"^3.9.1","assert-helpers":"^7.0.1","eslint":"^7.7.0","eslint-config-bevry":"^3.19.0","eslint-config-prettier":"^6.11.0","eslint-plugin-prettier":"^3.1.4","kava":"^5.11.0","make-deno-edition":"^1.0.0","prettier":"^2.0.5","projectz":"^2.14.0","surge":"^0.21.6","typedoc":"^0.18.0","typescript":"^4.0.2","valid-directory":"^3.0.0"},"scripts":{"our:clean":"rm -Rf ./docs ./edition* ./es2015 ./es5 ./out ./.next","our:compile":"npm run our:compile:deno && npm run our:compile:edition-esnext && npm run our:compile:edition-node-esm && npm run our:compile:types","our:compile:deno":"make-deno-edition --attempt","our:compile:edition-esnext":"tsc --module commonjs --target ESNext --outDir ./edition-esnext --project tsconfig.json && ( test ! -d edition-esnext/source || ( mv edition-esnext/source edition-temp && rm -Rf edition-esnext && mv edition-temp edition-esnext ) ) && echo '{\"type\": \"commonjs\"}' > edition-esnext/package.json","our:compile:edition-node-esm":"tsc --module ESNext --target ESNext --outDir ./edition-node-esm --project tsconfig.json && ( test ! -d edition-node-esm/source || ( mv edition-node-esm/source edition-temp && rm -Rf edition-node-esm && mv edition-temp edition-node-esm ) ) && echo '{\"type\": \"module\"}' > edition-node-esm/package.json","our:compile:types":"tsc --project tsconfig.json --emitDeclarationOnly --declaration --declarationMap --declarationDir ./compiled-types && ( test ! -d compiled-types/source || ( mv compiled-types/source edition-temp && rm -Rf compiled-types && mv edition-temp compiled-types ) )","our:deploy":"echo no need for this project","our:meta":"npm run our:meta:contributors && npm run our:meta:docs && npm run our:meta:projectz","our:meta:contributors":"update-contributors","our:meta:docs":"npm run our:meta:docs:typedoc","our:meta:docs:typedoc":"rm -Rf ./docs && typedoc --mode file --exclude '**/+(*test*|node_modules)' --excludeExternals --name \"$npm_package_name\" --readme ./README.md --out ./docs ./source","our:meta:projectz":"projectz compile","our:release":"npm run our:release:prepare && npm run our:release:check-changelog && npm run our:release:check-dirty && npm run our:release:tag && npm run our:release:push","our:release:check-changelog":"cat ./HISTORY.md | grep v$npm_package_version || (echo add a changelog entry for v$npm_package_version && exit -1)","our:release:check-dirty":"git diff --exit-code","our:release:prepare":"npm run our:clean && npm run our:compile && npm run our:test && npm run our:meta","our:release:push":"git push origin master && git push origin --tags","our:release:tag":"export MESSAGE=$(cat ./HISTORY.md | sed -n \"/## v$npm_package_version/,/##/p\" | sed 's/## //' | awk 'NR>1{print buf}{buf = $0}') && test \"$MESSAGE\" || (echo 'proper changelog entry not found' && exit -1) && git tag v$npm_package_version -am \"$MESSAGE\"","our:setup":"npm run our:setup:install","our:setup:install":"npm install","our:test":"npm run our:verify && npm test","our:verify":"npm run our:verify:directory && npm run our:verify:eslint && npm run our:verify:prettier","our:verify:directory":"valid-directory","our:verify:eslint":"eslint --fix --ignore-pattern '**/*.d.ts' --ignore-pattern '**/vendor/' --ignore-pattern '**/node_modules/' --ext .mjs,.js,.jsx,.ts,.tsx ./source","our:verify:prettier":"prettier --write .","test":"node ./edition-esnext/test.js"},"eslintConfig":{"extends":["bevry"]},"prettier":{"semi":false,"singleQuote":true},"gitHead":"7be69c8a5dbf97d725d33920052e65e1cddcd97b","readme":"<!-- TITLE/ -->\n\n<h1>@bevry/pluginloader</h1>\n\n<!-- /TITLE -->\n\n\n<!-- BADGES/ -->\n\n<span class=\"badge-travisci\"><a href=\"http://travis-ci.com/bevry/pluginloader\" title=\"Check this project's build status on TravisCI\"><img src=\"https://img.shields.io/travis/com/bevry/pluginloader/master.svg\" alt=\"Travis CI Build Status\" /></a></span>\n<span class=\"badge-npmversion\"><a href=\"https://npmjs.org/package/@bevry/pluginloader\" title=\"View this project on NPM\"><img src=\"https://img.shields.io/npm/v/@bevry/pluginloader.svg\" alt=\"NPM version\" /></a></span>\n<span class=\"badge-npmdownloads\"><a href=\"https://npmjs.org/package/@bevry/pluginloader\" title=\"View this project on NPM\"><img src=\"https://img.shields.io/npm/dm/@bevry/pluginloader.svg\" alt=\"NPM downloads\" /></a></span>\n<span class=\"badge-daviddm\"><a href=\"https://david-dm.org/bevry/pluginloader\" title=\"View the status of this project's dependencies on DavidDM\"><img src=\"https://img.shields.io/david/bevry/pluginloader.svg\" alt=\"Dependency Status\" /></a></span>\n<span class=\"badge-daviddmdev\"><a href=\"https://david-dm.org/bevry/pluginloader#info=devDependencies\" title=\"View the status of this project's development dependencies on DavidDM\"><img src=\"https://img.shields.io/david/dev/bevry/pluginloader.svg\" alt=\"Dev Dependency Status\" /></a></span>\n<br class=\"badge-separator\" />\n<span class=\"badge-githubsponsors\"><a href=\"https://github.com/sponsors/balupton\" title=\"Donate to this project using GitHub Sponsors\"><img src=\"https://img.shields.io/badge/github-donate-yellow.svg\" alt=\"GitHub Sponsors donate button\" /></a></span>\n<span class=\"badge-patreon\"><a href=\"https://patreon.com/bevry\" title=\"Donate to this project using Patreon\"><img src=\"https://img.shields.io/badge/patreon-donate-yellow.svg\" alt=\"Patreon donate button\" /></a></span>\n<span class=\"badge-flattr\"><a href=\"https://flattr.com/profile/balupton\" title=\"Donate to this project using Flattr\"><img src=\"https://img.shields.io/badge/flattr-donate-yellow.svg\" alt=\"Flattr donate button\" /></a></span>\n<span class=\"badge-liberapay\"><a href=\"https://liberapay.com/bevry\" title=\"Donate to this project using Liberapay\"><img src=\"https://img.shields.io/badge/liberapay-donate-yellow.svg\" alt=\"Liberapay donate button\" /></a></span>\n<span class=\"badge-buymeacoffee\"><a href=\"https://buymeacoffee.com/balupton\" title=\"Donate to this project using Buy Me A Coffee\"><img src=\"https://img.shields.io/badge/buy%20me%20a%20coffee-donate-yellow.svg\" alt=\"Buy Me A Coffee donate button\" /></a></span>\n<span class=\"badge-opencollective\"><a href=\"https://opencollective.com/bevry\" title=\"Donate to this project using Open Collective\"><img src=\"https://img.shields.io/badge/open%20collective-donate-yellow.svg\" alt=\"Open Collective donate button\" /></a></span>\n<span class=\"badge-crypto\"><a href=\"https://bevry.me/crypto\" title=\"Donate to this project using Cryptocurrency\"><img src=\"https://img.shields.io/badge/crypto-donate-yellow.svg\" alt=\"crypto donate button\" /></a></span>\n<span class=\"badge-paypal\"><a href=\"https://bevry.me/paypal\" title=\"Donate to this project using Paypal\"><img src=\"https://img.shields.io/badge/paypal-donate-yellow.svg\" alt=\"PayPal donate button\" /></a></span>\n<span class=\"badge-wishlist\"><a href=\"https://bevry.me/wishlist\" title=\"Buy an item on our wishlist for us\"><img src=\"https://img.shields.io/badge/wishlist-donate-yellow.svg\" alt=\"Wishlist browse button\" /></a></span>\n\n<!-- /BADGES -->\n\n\n<!-- DESCRIPTION/ -->\n\nA class for loading, verifying, and creating plugins. Used by DocPad for years.\n\n<!-- /DESCRIPTION -->\n\n\n## Usage\n\n[Complete API Documentation.](http://master.pluginloader.bevry.surge.sh/docs/globals.html)\n\n### Basics\n\nCreate your project:\n\n1. `mkdir my-project`\n1. `cd my-project`\n\nCreate your plugin:\n\n1. `mkdir myplugin`\n1. `cd myplugin`\n1. `npm init`\n1. `index.js` to:\n\n    ```javascript\n    module.exports = function (BasePlugin) {\n        return class MyPlugin extends BasePlugin {\n            constructor(...args) {\n                super(...args)\n                console.log('hello from my plugin')\n            }\n        }\n    }\n    ```\n\n1. `cd ..`\n\nCreate your plugin loader:\n\n1. `mkdir myapp`\n1. `cd myapp`\n1. `npm init`\n1. `index.js` to:\n\n    ```javascript\n    import PluginLoader from '@bevry/pluginloader'\n\n    class BasePlugin {\n        constructor() {\n            console.log('hello from base plugin')\n        }\n    }\n\n    const pluginLoader = new PluginLoader({\n        BasePlugin,\n        pluginPath: require('path').resolve(__dirname, '..', 'myplugin'),\n    })\n    ```\n\n1. `cd ..`\n\nRun the project:\n\n1. `node myapp/index.js`\n\n### Ecosystem\n\n-   [pluginclerk](https://github.com/bevry/pluginclerk) a project for fetching compatible plugins from the npm registry\n-   [docpad-baseplugin](https://github.com/docpad/docpad-baseplugin) the BasePlugin class that DocPad uses\n-   [docpad-plugintester](https://github.com/docpad/docpad-plugintester) testing helpers for DocPad plugins\n\n<!-- INSTALL/ -->\n\n<h2>Install</h2>\n\n<a href=\"https://npmjs.com\" title=\"npm is a package manager for javascript\"><h3>npm</h3></a>\n<ul>\n<li>Install: <code>npm install --save @bevry/pluginloader</code></li>\n<li>Import: <code>import pkg from ('@bevry/pluginloader')</code></li>\n<li>Require: <code>const pkg = require('@bevry/pluginloader').default</code></li>\n</ul>\n\n<h3><a href=\"https://editions.bevry.me\" title=\"Editions are the best way to produce and consume packages you care about.\">Editions</a></h3>\n\n<p>This package is published with the following editions:</p>\n\n<ul><li><code>@bevry/pluginloader/source/index.ts</code> is <a href=\"https://www.typescriptlang.org/\" title=\"TypeScript is a typed superset of JavaScript that compiles to plain JavaScript. \">TypeScript</a> source code with <a href=\"https://babeljs.io/docs/learn-es2015/#modules\" title=\"ECMAScript Modules\">Import</a> for modules</li>\n<li><code>@bevry/pluginloader</code> aliases <code>@bevry/pluginloader/edition-esnext/index.js</code></li>\n<li><code>@bevry/pluginloader/edition-esnext/index.js</code> is <a href=\"https://www.typescriptlang.org/\" title=\"TypeScript is a typed superset of JavaScript that compiles to plain JavaScript. \">TypeScript</a> compiled against <a href=\"https://en.wikipedia.org/wiki/ECMAScript#ES.Next\" title=\"ECMAScript Next\">ESNext</a> for <a href=\"https://nodejs.org\" title=\"Node.js is a JavaScript runtime built on Chrome's V8 JavaScript engine\">Node.js</a> 10 || 12 || 13 || 14 with <a href=\"https://nodejs.org/dist/latest-v5.x/docs/api/modules.html\" title=\"Node/CJS Modules\">Require</a> for modules</li>\n<li><code>@bevry/pluginloader/edition-node-esm/index.js</code> is <a href=\"https://www.typescriptlang.org/\" title=\"TypeScript is a typed superset of JavaScript that compiles to plain JavaScript. \">TypeScript</a> compiled against <a href=\"https://en.wikipedia.org/wiki/ECMAScript#ES.Next\" title=\"ECMAScript Next\">ESNext</a> for <a href=\"https://nodejs.org\" title=\"Node.js is a JavaScript runtime built on Chrome's V8 JavaScript engine\">Node.js</a> with <a href=\"https://babeljs.io/docs/learn-es2015/#modules\" title=\"ECMAScript Modules\">Import</a> for modules</li></ul>\n\n<!-- /INSTALL -->\n\n\n<!-- HISTORY/ -->\n\n<h2>History</h2>\n\n<a href=\"https://github.com/bevry/pluginloader/blob/master/HISTORY.md#files\">Discover the release history by heading on over to the <code>HISTORY.md</code> file.</a>\n\n<!-- /HISTORY -->\n\n\n<!-- CONTRIBUTE/ -->\n\n<h2>Contribute</h2>\n\n<a href=\"https://github.com/bevry/pluginloader/blob/master/CONTRIBUTING.md#files\">Discover how you can contribute by heading on over to the <code>CONTRIBUTING.md</code> file.</a>\n\n<!-- /CONTRIBUTE -->\n\n\n<!-- BACKERS/ -->\n\n<h2>Backers</h2>\n\n<h3>Maintainers</h3>\n\nThese amazing people are maintaining this project:\n\n<ul><li><a href=\"https://balupton.com\">Benjamin Lupton</a> — <a href=\"https://github.com/bevry/pluginloader/commits?author=balupton\" title=\"View the GitHub contributions of Benjamin Lupton on repository bevry/pluginloader\">view contributions</a></li></ul>\n\n<h3>Sponsors</h3>\n\nNo sponsors yet! Will you be the first?\n\n<span class=\"badge-githubsponsors\"><a href=\"https://github.com/sponsors/balupton\" title=\"Donate to this project using GitHub Sponsors\"><img src=\"https://img.shields.io/badge/github-donate-yellow.svg\" alt=\"GitHub Sponsors donate button\" /></a></span>\n<span class=\"badge-patreon\"><a href=\"https://patreon.com/bevry\" title=\"Donate to this project using Patreon\"><img src=\"https://img.shields.io/badge/patreon-donate-yellow.svg\" alt=\"Patreon donate button\" /></a></span>\n<span class=\"badge-flattr\"><a href=\"https://flattr.com/profile/balupton\" title=\"Donate to this project using Flattr\"><img src=\"https://img.shields.io/badge/flattr-donate-yellow.svg\" alt=\"Flattr donate button\" /></a></span>\n<span class=\"badge-liberapay\"><a href=\"https://liberapay.com/bevry\" title=\"Donate to this project using Liberapay\"><img src=\"https://img.shields.io/badge/liberapay-donate-yellow.svg\" alt=\"Liberapay donate button\" /></a></span>\n<span class=\"badge-buymeacoffee\"><a href=\"https://buymeacoffee.com/balupton\" title=\"Donate to this project using Buy Me A Coffee\"><img src=\"https://img.shields.io/badge/buy%20me%20a%20coffee-donate-yellow.svg\" alt=\"Buy Me A Coffee donate button\" /></a></span>\n<span class=\"badge-opencollective\"><a href=\"https://opencollective.com/bevry\" title=\"Donate to this project using Open Collective\"><img src=\"https://img.shields.io/badge/open%20collective-donate-yellow.svg\" alt=\"Open Collective donate button\" /></a></span>\n<span class=\"badge-crypto\"><a href=\"https://bevry.me/crypto\" title=\"Donate to this project using Cryptocurrency\"><img src=\"https://img.shields.io/badge/crypto-donate-yellow.svg\" alt=\"crypto donate button\" /></a></span>\n<span class=\"badge-paypal\"><a href=\"https://bevry.me/paypal\" title=\"Donate to this project using Paypal\"><img src=\"https://img.shields.io/badge/paypal-donate-yellow.svg\" alt=\"PayPal donate button\" /></a></span>\n<span class=\"badge-wishlist\"><a href=\"https://bevry.me/wishlist\" title=\"Buy an item on our wishlist for us\"><img src=\"https://img.shields.io/badge/wishlist-donate-yellow.svg\" alt=\"Wishlist browse button\" /></a></span>\n\n<h3>Contributors</h3>\n\nThese amazing people have contributed code to this project:\n\n<ul><li><a href=\"https://balupton.com\">Benjamin Lupton</a> — <a href=\"https://github.com/bevry/pluginloader/commits?author=balupton\" title=\"View the GitHub contributions of Benjamin Lupton on repository bevry/pluginloader\">view contributions</a></li></ul>\n\n<a href=\"https://github.com/bevry/pluginloader/blob/master/CONTRIBUTING.md#files\">Discover how you can contribute by heading on over to the <code>CONTRIBUTING.md</code> file.</a>\n\n<!-- /BACKERS -->\n\n\n<!-- LICENSE/ -->\n\n<h2>License</h2>\n\nUnless stated otherwise all works are:\n\n<ul><li>Copyright &copy; 2018+ <a href=\"https://balupton.com\">Benjamin Lupton</a></li></ul>\n\nand licensed under:\n\n<ul><li><a href=\"http://spdx.org/licenses/MIT.html\">MIT License</a></li></ul>\n\n<!-- /LICENSE -->\n","readmeFilename":"README.md","_id":"@bevry/pluginloader@4.11.0-next.1599998859.7be69c8a5dbf97d725d33920052e65e1cddcd97b","_nodeVersion":"14.10.1","_npmVersion":"6.14.8","dist":{"integrity":"sha512-9DBVIh2BXQpEULzcoo5Lvit2rhJXU1zgiOUkS0O8tD9Ri2tzs7xdNXUVoWOJ0NEona6cDYtUIxgz96ht29GpSA==","shasum":"76519d3d9c702b46fc8aa1488f1ad03aa0bf57b8","tarball":"https://registry.npmjs.org/@bevry/pluginloader/-/pluginloader-4.11.0-next.1599998859.7be69c8a5dbf97d725d33920052e65e1cddcd97b.tgz","fileCount":13,"unpackedSize":53683,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfXguNCRA9TVsSAnZWagAALMsP/jKjTl1vw9gRMk7GtEwY\n9tSPlzR28gx5vxIZOepCQKpCrQHNd3sTDqTV5rZZci/Rx6eE8bgBLuO4XKFf\nuts3j5BvgvuELuTCP0X8IS2vyaQgtwD6q8Yysm16QnK9i3n1sdKZmQxRIMKJ\nOAREZFN6ftx56ZEwA7/r+RD20h3bjJ5tYvjOCeErFqTCyi8BhGijj374YSvr\n80V6udJvFAMgT8i9KiMpQ8qwEmxK/xAyI3XHEuPoWmqJxTcuqSoD2tRlFfFT\nPjwnegmHuCVIpcFSQjVcdg6nLPWsk5jIBlWI6PmzV63wWScU4bEwU7SaxFbn\nraG3gwyug/CMgMcI/62Fem9I+zxniy4iwk5U4WH9D2LpIB49HcBOex5D+oH8\n1n3Mo4taa8Pq63JjsEkk1kCqc9vahLAtB/25ttRUwO5p6D37zbn8WiAGtoH2\nDrv5PJ0mW+SycW2KoMJr83OSrVEwa7W9N6vC8n0VDZOrVZYbSAvXHVcoJ4YF\nHueR+i3iBEvxJyMCA7s9gsLz4dUSWqbQmmHpVUIT5/VfWNDkNxlVCnVT7GSE\noNgqA7oUD8gmJHiulBbcmZm39PoGSTtLRl2MxyGUMlMc4XK/D+hHBLRFU1sf\nmQ0/PVsSx90WZVUaqHoJD1R/I93QS7PBzcb6Ud2/kFDpcfx2o3kdtIKmZp2L\nBjBP\r\n=Qr/K\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCfKsXbI2YNnaxnGh1IRo1mkkc2s/stkzhDQoqurCemEAIgbP8jL+z4k7zVcWI/feCZaVgHmA8CHhGk3YGPuqsxY8k="}]},"_npmUser":{"name":"bevryme","email":"us@bevry.me"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/pluginloader_4.11.0-next.1599998859.7be69c8a5dbf97d725d33920052e65e1cddcd97b_1599998861212_0.7464219235810778"},"_hasShrinkwrap":false},"4.11.0-next.1600606887.7453d70e546f286aab45ad7580ef3e3594785319":{"name":"@bevry/pluginloader","version":"4.11.0-next.1600606887.7453d70e546f286aab45ad7580ef3e3594785319","description":"A class for loading, verifying, and creating plugins. Used by DocPad for years.","homepage":"https://github.com/bevry/pluginloader","license":"MIT","keywords":["bevry","docpad","export-default","loader","node","plugin","plugins","typed","types","typescript"],"badges":{"list":["travisci","npmversion","npmdownloads","daviddm","daviddmdev","---","githubsponsors","patreon","flattr","liberapay","buymeacoffee","opencollective","crypto","paypal","wishlist"],"config":{"githubSponsorsUsername":"balupton","buymeacoffeeUsername":"balupton","cryptoURL":"https://bevry.me/crypto","flattrUsername":"balupton","liberapayUsername":"bevry","opencollectiveUsername":"bevry","patreonUsername":"bevry","paypalURL":"https://bevry.me/paypal","wishlistURL":"https://bevry.me/wishlist","travisTLD":"com","githubUsername":"bevry","githubRepository":"pluginloader","githubSlug":"bevry/pluginloader","npmPackageName":"@bevry/pluginloader"}},"funding":"https://bevry.me/fund","author":{"name":"2018+ Benjamin Lupton","email":"b@lupton.cc","url":"https://balupton.com"},"maintainers":[{"name":"sumitrai","email":"sumitrai96@gmail.com"},{"name":"bevryme","email":"us@bevry.me"},{"name":"balupton","email":"b@lupton.cc"}],"contributors":[{"name":"Benjamin Lupton","email":"b@lupton.cc","url":"https://github.com/balupton"}],"bugs":{"url":"https://github.com/bevry/pluginloader/issues"},"repository":{"type":"git","url":"git+https://github.com/bevry/pluginloader.git"},"engines":{"node":">=10"},"editions":[{"description":"TypeScript source code with Import for modules","directory":"source","entry":"index.ts","tags":["typescript","import"],"engines":false},{"description":"TypeScript compiled against ESNext for Node.js 10 || 12 || 13 || 14 with Require for modules","directory":"edition-esnext","entry":"index.js","tags":["javascript","esnext","require"],"engines":{"node":"10 || 12 || 13 || 14"}},{"description":"TypeScript compiled against ESNext for Node.js with Import for modules","directory":"edition-node-esm","entry":"index.js","tags":["javascript","import"],"engines":{"node":true,"browsers":false}}],"types":"./compiled-types/","type":"module","main":"edition-esnext/index.js","exports":{"node":{"import":"./edition-node-esm/index.js","require":"./edition-esnext/index.js"}},"dependencies":{"errlop":"^3.16.0","semver":"^7.3.2","typechecker":"^7.13.0"},"devDependencies":{"@bevry/update-contributors":"^1.15.0","@typescript-eslint/eslint-plugin":"^4.0.0","@typescript-eslint/parser":"^3.9.1","assert-helpers":"^7.0.1","eslint":"^7.7.0","eslint-config-bevry":"^3.19.0","eslint-config-prettier":"^6.11.0","eslint-plugin-prettier":"^3.1.4","kava":"^5.11.0","make-deno-edition":"^1.0.0","prettier":"^2.0.5","projectz":"^2.14.0","surge":"^0.21.6","typedoc":"^0.19.1","typescript":"^4.0.2","valid-directory":"^3.0.0"},"scripts":{"our:clean":"rm -Rf ./docs ./edition* ./es2015 ./es5 ./out ./.next","our:compile":"npm run our:compile:deno && npm run our:compile:edition-esnext && npm run our:compile:edition-node-esm && npm run our:compile:types","our:compile:deno":"make-deno-edition --attempt","our:compile:edition-esnext":"tsc --module commonjs --target ESNext --outDir ./edition-esnext --project tsconfig.json && ( test ! -d edition-esnext/source || ( mv edition-esnext/source edition-temp && rm -Rf edition-esnext && mv edition-temp edition-esnext ) ) && echo '{\"type\": \"commonjs\"}' > edition-esnext/package.json","our:compile:edition-node-esm":"tsc --module ESNext --target ESNext --outDir ./edition-node-esm --project tsconfig.json && ( test ! -d edition-node-esm/source || ( mv edition-node-esm/source edition-temp && rm -Rf edition-node-esm && mv edition-temp edition-node-esm ) ) && echo '{\"type\": \"module\"}' > edition-node-esm/package.json","our:compile:types":"tsc --project tsconfig.json --emitDeclarationOnly --declaration --declarationMap --declarationDir ./compiled-types && ( test ! -d compiled-types/source || ( mv compiled-types/source edition-temp && rm -Rf compiled-types && mv edition-temp compiled-types ) )","our:deploy":"echo no need for this project","our:meta":"npm run our:meta:contributors && npm run our:meta:docs && npm run our:meta:projectz","our:meta:contributors":"update-contributors","our:meta:docs":"npm run our:meta:docs:typedoc","our:meta:docs:typedoc":"rm -Rf ./docs && typedoc --mode file --exclude '**/+(*test*|node_modules)' --excludeExternals --name \"$npm_package_name\" --readme ./README.md --out ./docs ./source","our:meta:projectz":"projectz compile","our:release":"npm run our:release:prepare && npm run our:release:check-changelog && npm run our:release:check-dirty && npm run our:release:tag && npm run our:release:push","our:release:check-changelog":"cat ./HISTORY.md | grep v$npm_package_version || (echo add a changelog entry for v$npm_package_version && exit -1)","our:release:check-dirty":"git diff --exit-code","our:release:prepare":"npm run our:clean && npm run our:compile && npm run our:test && npm run our:meta","our:release:push":"git push origin master && git push origin --tags","our:release:tag":"export MESSAGE=$(cat ./HISTORY.md | sed -n \"/## v$npm_package_version/,/##/p\" | sed 's/## //' | awk 'NR>1{print buf}{buf = $0}') && test \"$MESSAGE\" || (echo 'proper changelog entry not found' && exit -1) && git tag v$npm_package_version -am \"$MESSAGE\"","our:setup":"npm run our:setup:install","our:setup:install":"npm install","our:test":"npm run our:verify && npm test","our:verify":"npm run our:verify:directory && npm run our:verify:eslint && npm run our:verify:prettier","our:verify:directory":"valid-directory","our:verify:eslint":"eslint --fix --ignore-pattern '**/*.d.ts' --ignore-pattern '**/vendor/' --ignore-pattern '**/node_modules/' --ext .mjs,.js,.jsx,.ts,.tsx ./source","our:verify:prettier":"prettier --write .","test":"node ./edition-esnext/test.js"},"eslintConfig":{"extends":["bevry"]},"prettier":{"semi":false,"singleQuote":true},"gitHead":"7453d70e546f286aab45ad7580ef3e3594785319","readme":"<!-- TITLE/ -->\n\n<h1>@bevry/pluginloader</h1>\n\n<!-- /TITLE -->\n\n\n<!-- BADGES/ -->\n\n<span class=\"badge-travisci\"><a href=\"http://travis-ci.com/bevry/pluginloader\" title=\"Check this project's build status on TravisCI\"><img src=\"https://img.shields.io/travis/com/bevry/pluginloader/master.svg\" alt=\"Travis CI Build Status\" /></a></span>\n<span class=\"badge-npmversion\"><a href=\"https://npmjs.org/package/@bevry/pluginloader\" title=\"View this project on NPM\"><img src=\"https://img.shields.io/npm/v/@bevry/pluginloader.svg\" alt=\"NPM version\" /></a></span>\n<span class=\"badge-npmdownloads\"><a href=\"https://npmjs.org/package/@bevry/pluginloader\" title=\"View this project on NPM\"><img src=\"https://img.shields.io/npm/dm/@bevry/pluginloader.svg\" alt=\"NPM downloads\" /></a></span>\n<span class=\"badge-daviddm\"><a href=\"https://david-dm.org/bevry/pluginloader\" title=\"View the status of this project's dependencies on DavidDM\"><img src=\"https://img.shields.io/david/bevry/pluginloader.svg\" alt=\"Dependency Status\" /></a></span>\n<span class=\"badge-daviddmdev\"><a href=\"https://david-dm.org/bevry/pluginloader#info=devDependencies\" title=\"View the status of this project's development dependencies on DavidDM\"><img src=\"https://img.shields.io/david/dev/bevry/pluginloader.svg\" alt=\"Dev Dependency Status\" /></a></span>\n<br class=\"badge-separator\" />\n<span class=\"badge-githubsponsors\"><a href=\"https://github.com/sponsors/balupton\" title=\"Donate to this project using GitHub Sponsors\"><img src=\"https://img.shields.io/badge/github-donate-yellow.svg\" alt=\"GitHub Sponsors donate button\" /></a></span>\n<span class=\"badge-patreon\"><a href=\"https://patreon.com/bevry\" title=\"Donate to this project using Patreon\"><img src=\"https://img.shields.io/badge/patreon-donate-yellow.svg\" alt=\"Patreon donate button\" /></a></span>\n<span class=\"badge-flattr\"><a href=\"https://flattr.com/profile/balupton\" title=\"Donate to this project using Flattr\"><img src=\"https://img.shields.io/badge/flattr-donate-yellow.svg\" alt=\"Flattr donate button\" /></a></span>\n<span class=\"badge-liberapay\"><a href=\"https://liberapay.com/bevry\" title=\"Donate to this project using Liberapay\"><img src=\"https://img.shields.io/badge/liberapay-donate-yellow.svg\" alt=\"Liberapay donate button\" /></a></span>\n<span class=\"badge-buymeacoffee\"><a href=\"https://buymeacoffee.com/balupton\" title=\"Donate to this project using Buy Me A Coffee\"><img src=\"https://img.shields.io/badge/buy%20me%20a%20coffee-donate-yellow.svg\" alt=\"Buy Me A Coffee donate button\" /></a></span>\n<span class=\"badge-opencollective\"><a href=\"https://opencollective.com/bevry\" title=\"Donate to this project using Open Collective\"><img src=\"https://img.shields.io/badge/open%20collective-donate-yellow.svg\" alt=\"Open Collective donate button\" /></a></span>\n<span class=\"badge-crypto\"><a href=\"https://bevry.me/crypto\" title=\"Donate to this project using Cryptocurrency\"><img src=\"https://img.shields.io/badge/crypto-donate-yellow.svg\" alt=\"crypto donate button\" /></a></span>\n<span class=\"badge-paypal\"><a href=\"https://bevry.me/paypal\" title=\"Donate to this project using Paypal\"><img src=\"https://img.shields.io/badge/paypal-donate-yellow.svg\" alt=\"PayPal donate button\" /></a></span>\n<span class=\"badge-wishlist\"><a href=\"https://bevry.me/wishlist\" title=\"Buy an item on our wishlist for us\"><img src=\"https://img.shields.io/badge/wishlist-donate-yellow.svg\" alt=\"Wishlist browse button\" /></a></span>\n\n<!-- /BADGES -->\n\n\n<!-- DESCRIPTION/ -->\n\nA class for loading, verifying, and creating plugins. Used by DocPad for years.\n\n<!-- /DESCRIPTION -->\n\n\n## Usage\n\n[Complete API Documentation.](http://master.pluginloader.bevry.surge.sh/docs/globals.html)\n\n### Basics\n\nCreate your project:\n\n1. `mkdir my-project`\n1. `cd my-project`\n\nCreate your plugin:\n\n1. `mkdir myplugin`\n1. `cd myplugin`\n1. `npm init`\n1. `index.js` to:\n\n    ```javascript\n    module.exports = function (BasePlugin) {\n        return class MyPlugin extends BasePlugin {\n            constructor(...args) {\n                super(...args)\n                console.log('hello from my plugin')\n            }\n        }\n    }\n    ```\n\n1. `cd ..`\n\nCreate your plugin loader:\n\n1. `mkdir myapp`\n1. `cd myapp`\n1. `npm init`\n1. `index.js` to:\n\n    ```javascript\n    import PluginLoader from '@bevry/pluginloader'\n\n    class BasePlugin {\n        constructor() {\n            console.log('hello from base plugin')\n        }\n    }\n\n    const pluginLoader = new PluginLoader({\n        BasePlugin,\n        pluginPath: require('path').resolve(__dirname, '..', 'myplugin'),\n    })\n    ```\n\n1. `cd ..`\n\nRun the project:\n\n1. `node myapp/index.js`\n\n### Ecosystem\n\n-   [pluginclerk](https://github.com/bevry/pluginclerk) a project for fetching compatible plugins from the npm registry\n-   [docpad-baseplugin](https://github.com/docpad/docpad-baseplugin) the BasePlugin class that DocPad uses\n-   [docpad-plugintester](https://github.com/docpad/docpad-plugintester) testing helpers for DocPad plugins\n\n<!-- INSTALL/ -->\n\n<h2>Install</h2>\n\n<a href=\"https://npmjs.com\" title=\"npm is a package manager for javascript\"><h3>npm</h3></a>\n<ul>\n<li>Install: <code>npm install --save @bevry/pluginloader</code></li>\n<li>Import: <code>import pkg from ('@bevry/pluginloader')</code></li>\n<li>Require: <code>const pkg = require('@bevry/pluginloader').default</code></li>\n</ul>\n\n<h3><a href=\"https://editions.bevry.me\" title=\"Editions are the best way to produce and consume packages you care about.\">Editions</a></h3>\n\n<p>This package is published with the following editions:</p>\n\n<ul><li><code>@bevry/pluginloader/source/index.ts</code> is <a href=\"https://www.typescriptlang.org/\" title=\"TypeScript is a typed superset of JavaScript that compiles to plain JavaScript. \">TypeScript</a> source code with <a href=\"https://babeljs.io/docs/learn-es2015/#modules\" title=\"ECMAScript Modules\">Import</a> for modules</li>\n<li><code>@bevry/pluginloader</code> aliases <code>@bevry/pluginloader/edition-esnext/index.js</code></li>\n<li><code>@bevry/pluginloader/edition-esnext/index.js</code> is <a href=\"https://www.typescriptlang.org/\" title=\"TypeScript is a typed superset of JavaScript that compiles to plain JavaScript. \">TypeScript</a> compiled against <a href=\"https://en.wikipedia.org/wiki/ECMAScript#ES.Next\" title=\"ECMAScript Next\">ESNext</a> for <a href=\"https://nodejs.org\" title=\"Node.js is a JavaScript runtime built on Chrome's V8 JavaScript engine\">Node.js</a> 10 || 12 || 13 || 14 with <a href=\"https://nodejs.org/dist/latest-v5.x/docs/api/modules.html\" title=\"Node/CJS Modules\">Require</a> for modules</li>\n<li><code>@bevry/pluginloader/edition-node-esm/index.js</code> is <a href=\"https://www.typescriptlang.org/\" title=\"TypeScript is a typed superset of JavaScript that compiles to plain JavaScript. \">TypeScript</a> compiled against <a href=\"https://en.wikipedia.org/wiki/ECMAScript#ES.Next\" title=\"ECMAScript Next\">ESNext</a> for <a href=\"https://nodejs.org\" title=\"Node.js is a JavaScript runtime built on Chrome's V8 JavaScript engine\">Node.js</a> with <a href=\"https://babeljs.io/docs/learn-es2015/#modules\" title=\"ECMAScript Modules\">Import</a> for modules</li></ul>\n\n<!-- /INSTALL -->\n\n\n<!-- HISTORY/ -->\n\n<h2>History</h2>\n\n<a href=\"https://github.com/bevry/pluginloader/blob/master/HISTORY.md#files\">Discover the release history by heading on over to the <code>HISTORY.md</code> file.</a>\n\n<!-- /HISTORY -->\n\n\n<!-- CONTRIBUTE/ -->\n\n<h2>Contribute</h2>\n\n<a href=\"https://github.com/bevry/pluginloader/blob/master/CONTRIBUTING.md#files\">Discover how you can contribute by heading on over to the <code>CONTRIBUTING.md</code> file.</a>\n\n<!-- /CONTRIBUTE -->\n\n\n<!-- BACKERS/ -->\n\n<h2>Backers</h2>\n\n<h3>Maintainers</h3>\n\nThese amazing people are maintaining this project:\n\n<ul><li><a href=\"https://balupton.com\">Benjamin Lupton</a> — <a href=\"https://github.com/bevry/pluginloader/commits?author=balupton\" title=\"View the GitHub contributions of Benjamin Lupton on repository bevry/pluginloader\">view contributions</a></li></ul>\n\n<h3>Sponsors</h3>\n\nNo sponsors yet! Will you be the first?\n\n<span class=\"badge-githubsponsors\"><a href=\"https://github.com/sponsors/balupton\" title=\"Donate to this project using GitHub Sponsors\"><img src=\"https://img.shields.io/badge/github-donate-yellow.svg\" alt=\"GitHub Sponsors donate button\" /></a></span>\n<span class=\"badge-patreon\"><a href=\"https://patreon.com/bevry\" title=\"Donate to this project using Patreon\"><img src=\"https://img.shields.io/badge/patreon-donate-yellow.svg\" alt=\"Patreon donate button\" /></a></span>\n<span class=\"badge-flattr\"><a href=\"https://flattr.com/profile/balupton\" title=\"Donate to this project using Flattr\"><img src=\"https://img.shields.io/badge/flattr-donate-yellow.svg\" alt=\"Flattr donate button\" /></a></span>\n<span class=\"badge-liberapay\"><a href=\"https://liberapay.com/bevry\" title=\"Donate to this project using Liberapay\"><img src=\"https://img.shields.io/badge/liberapay-donate-yellow.svg\" alt=\"Liberapay donate button\" /></a></span>\n<span class=\"badge-buymeacoffee\"><a href=\"https://buymeacoffee.com/balupton\" title=\"Donate to this project using Buy Me A Coffee\"><img src=\"https://img.shields.io/badge/buy%20me%20a%20coffee-donate-yellow.svg\" alt=\"Buy Me A Coffee donate button\" /></a></span>\n<span class=\"badge-opencollective\"><a href=\"https://opencollective.com/bevry\" title=\"Donate to this project using Open Collective\"><img src=\"https://img.shields.io/badge/open%20collective-donate-yellow.svg\" alt=\"Open Collective donate button\" /></a></span>\n<span class=\"badge-crypto\"><a href=\"https://bevry.me/crypto\" title=\"Donate to this project using Cryptocurrency\"><img src=\"https://img.shields.io/badge/crypto-donate-yellow.svg\" alt=\"crypto donate button\" /></a></span>\n<span class=\"badge-paypal\"><a href=\"https://bevry.me/paypal\" title=\"Donate to this project using Paypal\"><img src=\"https://img.shields.io/badge/paypal-donate-yellow.svg\" alt=\"PayPal donate button\" /></a></span>\n<span class=\"badge-wishlist\"><a href=\"https://bevry.me/wishlist\" title=\"Buy an item on our wishlist for us\"><img src=\"https://img.shields.io/badge/wishlist-donate-yellow.svg\" alt=\"Wishlist browse button\" /></a></span>\n\n<h3>Contributors</h3>\n\nThese amazing people have contributed code to this project:\n\n<ul><li><a href=\"https://balupton.com\">Benjamin Lupton</a> — <a href=\"https://github.com/bevry/pluginloader/commits?author=balupton\" title=\"View the GitHub contributions of Benjamin Lupton on repository bevry/pluginloader\">view contributions</a></li></ul>\n\n<a href=\"https://github.com/bevry/pluginloader/blob/master/CONTRIBUTING.md#files\">Discover how you can contribute by heading on over to the <code>CONTRIBUTING.md</code> file.</a>\n\n<!-- /BACKERS -->\n\n\n<!-- LICENSE/ -->\n\n<h2>License</h2>\n\nUnless stated otherwise all works are:\n\n<ul><li>Copyright &copy; 2018+ <a href=\"https://balupton.com\">Benjamin Lupton</a></li></ul>\n\nand licensed under:\n\n<ul><li><a href=\"http://spdx.org/licenses/MIT.html\">MIT License</a></li></ul>\n\n<!-- /LICENSE -->\n","readmeFilename":"README.md","_id":"@bevry/pluginloader@4.11.0-next.1600606887.7453d70e546f286aab45ad7580ef3e3594785319","_nodeVersion":"14.11.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-lIZR4we1ntcGNq6HiB+fQFNYaNLSX+KzRuL3Q/CraEdWv1akAyT9y0vFgRiG8wNaRj0p2rAllhmy1ElhJjJSMQ==","shasum":"f1cb7a6efca67bef2a4fdfc6aa6dfb78f2ffba16","tarball":"https://registry.npmjs.org/@bevry/pluginloader/-/pluginloader-4.11.0-next.1600606887.7453d70e546f286aab45ad7580ef3e3594785319.tgz","fileCount":13,"unpackedSize":53683,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfZ1KoCRA9TVsSAnZWagAAb/UP/Risqx4kG5AhT6rljwRf\nmzwqA9faX9R9oeF7g0VW1YjiqY6QtCn/MPRq12rPsbqJzJgTmBtY9cJ228/n\nc3+JSnrmdFGaWm1GqOuFi3Qpb/WTvyuSGX0kmyt5qfAgHI7mJoFN/z/UWVO5\nUwvpnIFQLf+04/3D40YVbpeNnATSztBGYfILC7InkUK171pfYHiPoIQlyNJS\nPm9u+AJ6nYj4MKG8jaqy65cGWCy54vwoG5/Y1cYgig02n4msXNk6vSjoQraE\nnyXWTboDDQCUzHcOaYPr5bACU0DH2sm+C3UvgDoXSuUqosV5NkTpXy9O9ymy\nlJuXYtxUZAulpBLDBsmLMsHylptDk0QAeSwBmvOWfh0wkBaZqpGiRIYdh8SJ\nuE3b5xjMKga8AWteYx7kUvmqnqghFplyQfcBwj9IqvzhvXu1AywKnYa2c3D5\nAvO5ZBGYyK20gymxZOWwME3bi3P8SvmCIljSEQSbxC4VGF5HxenQ73ti4Xud\nWq0ytHTjanRoDucHgmSkarSt2dbPKeRx4gaZJgfhXoAvHIXKYJFTk6/thA3L\nNBNvmKlKlPxaSJFIxl++XZNUVY3t4v9vHWOliaku7IWVIH4MUVX2CG29TmFP\n9u5hDjAMQNjJZGf1JBO9CJrVfnlEzlWgXK+2Dqr5Kf2B9zhj/LtrFt5+BqsO\n/SXw\r\n=twuS\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDZ/q+rZ6Q+W/e6s/IMszqpjroVrRDSYPUhhkat9vWPagIgTFfNvEx+zLs+TjjXcGjwNxDpghAWKWLKDI6vrz7F/HA="}]},"_npmUser":{"name":"bevryme","email":"us@bevry.me"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/pluginloader_4.11.0-next.1600606887.7453d70e546f286aab45ad7580ef3e3594785319_1600606888488_0.7410839385492298"},"_hasShrinkwrap":false},"4.11.0-next.1601210864.0ef206c28a2c262ebfe08b9d66e6998b6109b6c6":{"name":"@bevry/pluginloader","version":"4.11.0-next.1601210864.0ef206c28a2c262ebfe08b9d66e6998b6109b6c6","description":"A class for loading, verifying, and creating plugins. Used by DocPad for years.","homepage":"https://github.com/bevry/pluginloader","license":"MIT","keywords":["bevry","docpad","export-default","loader","node","plugin","plugins","typed","types","typescript"],"badges":{"list":["travisci","npmversion","npmdownloads","daviddm","daviddmdev","---","githubsponsors","patreon","flattr","liberapay","buymeacoffee","opencollective","crypto","paypal","wishlist"],"config":{"githubSponsorsUsername":"balupton","buymeacoffeeUsername":"balupton","cryptoURL":"https://bevry.me/crypto","flattrUsername":"balupton","liberapayUsername":"bevry","opencollectiveUsername":"bevry","patreonUsername":"bevry","paypalURL":"https://bevry.me/paypal","wishlistURL":"https://bevry.me/wishlist","travisTLD":"com","githubUsername":"bevry","githubRepository":"pluginloader","githubSlug":"bevry/pluginloader","npmPackageName":"@bevry/pluginloader"}},"funding":"https://bevry.me/fund","author":{"name":"2018+ Benjamin Lupton","email":"b@lupton.cc","url":"https://balupton.com"},"maintainers":[{"name":"sumitrai","email":"sumitrai96@gmail.com"},{"name":"bevryme","email":"us@bevry.me"},{"name":"balupton","email":"b@lupton.cc"}],"contributors":[{"name":"Benjamin Lupton","email":"b@lupton.cc","url":"https://github.com/balupton"}],"bugs":{"url":"https://github.com/bevry/pluginloader/issues"},"repository":{"type":"git","url":"git+https://github.com/bevry/pluginloader.git"},"engines":{"node":">=10"},"editions":[{"description":"TypeScript source code with Import for modules","directory":"source","entry":"index.ts","tags":["typescript","import"],"engines":false},{"description":"TypeScript compiled against ESNext for Node.js 10 || 12 || 13 || 14 with Require for modules","directory":"edition-esnext","entry":"index.js","tags":["javascript","esnext","require"],"engines":{"node":"10 || 12 || 13 || 14"}},{"description":"TypeScript compiled against ESNext for Node.js with Import for modules","directory":"edition-node-esm","entry":"index.js","tags":["javascript","import"],"engines":{"node":true,"browsers":false}}],"types":"./compiled-types/","type":"module","main":"edition-esnext/index.js","exports":{"node":{"import":"./edition-node-esm/index.js","require":"./edition-esnext/index.js"}},"dependencies":{"errlop":"^3.16.0","semver":"^7.3.2","typechecker":"^7.13.0"},"devDependencies":{"@bevry/update-contributors":"^1.15.0","@typescript-eslint/eslint-plugin":"^4.0.0","@typescript-eslint/parser":"^3.9.1","assert-helpers":"^7.0.1","eslint":"^7.7.0","eslint-config-bevry":"^3.19.0","eslint-config-prettier":"^6.11.0","eslint-plugin-prettier":"^3.1.4","kava":"^5.11.0","make-deno-edition":"^1.0.0","prettier":"^2.0.5","projectz":"^2.14.0","surge":"^0.21.6","typedoc":"^0.19.1","typescript":"^4.0.2","valid-directory":"^3.0.0"},"scripts":{"our:clean":"rm -Rf ./docs ./edition* ./es2015 ./es5 ./out ./.next","our:compile":"npm run our:compile:deno && npm run our:compile:edition-esnext && npm run our:compile:edition-node-esm && npm run our:compile:types","our:compile:deno":"make-deno-edition --attempt","our:compile:edition-esnext":"tsc --module commonjs --target ESNext --outDir ./edition-esnext --project tsconfig.json && ( test ! -d edition-esnext/source || ( mv edition-esnext/source edition-temp && rm -Rf edition-esnext && mv edition-temp edition-esnext ) ) && echo '{\"type\": \"commonjs\"}' > edition-esnext/package.json","our:compile:edition-node-esm":"tsc --module ESNext --target ESNext --outDir ./edition-node-esm --project tsconfig.json && ( test ! -d edition-node-esm/source || ( mv edition-node-esm/source edition-temp && rm -Rf edition-node-esm && mv edition-temp edition-node-esm ) ) && echo '{\"type\": \"module\"}' > edition-node-esm/package.json","our:compile:types":"tsc --project tsconfig.json --emitDeclarationOnly --declaration --declarationMap --declarationDir ./compiled-types && ( test ! -d compiled-types/source || ( mv compiled-types/source edition-temp && rm -Rf compiled-types && mv edition-temp compiled-types ) )","our:deploy":"echo no need for this project","our:meta":"npm run our:meta:contributors && npm run our:meta:docs && npm run our:meta:projectz","our:meta:contributors":"update-contributors","our:meta:docs":"npm run our:meta:docs:typedoc","our:meta:docs:typedoc":"rm -Rf ./docs && typedoc --mode file --exclude '**/+(*test*|node_modules)' --excludeExternals --name \"$npm_package_name\" --readme ./README.md --out ./docs ./source","our:meta:projectz":"projectz compile","our:release":"npm run our:release:prepare && npm run our:release:check-changelog && npm run our:release:check-dirty && npm run our:release:tag && npm run our:release:push","our:release:check-changelog":"cat ./HISTORY.md | grep v$npm_package_version || (echo add a changelog entry for v$npm_package_version && exit -1)","our:release:check-dirty":"git diff --exit-code","our:release:prepare":"npm run our:clean && npm run our:compile && npm run our:test && npm run our:meta","our:release:push":"git push origin master && git push origin --tags","our:release:tag":"export MESSAGE=$(cat ./HISTORY.md | sed -n \"/## v$npm_package_version/,/##/p\" | sed 's/## //' | awk 'NR>1{print buf}{buf = $0}') && test \"$MESSAGE\" || (echo 'proper changelog entry not found' && exit -1) && git tag v$npm_package_version -am \"$MESSAGE\"","our:setup":"npm run our:setup:install","our:setup:install":"npm install","our:test":"npm run our:verify && npm test","our:verify":"npm run our:verify:directory && npm run our:verify:eslint && npm run our:verify:prettier","our:verify:directory":"valid-directory","our:verify:eslint":"eslint --fix --ignore-pattern '**/*.d.ts' --ignore-pattern '**/vendor/' --ignore-pattern '**/node_modules/' --ext .mjs,.js,.jsx,.ts,.tsx ./source","our:verify:prettier":"prettier --write .","test":"node ./edition-esnext/test.js"},"eslintConfig":{"extends":["bevry"]},"prettier":{"semi":false,"singleQuote":true},"gitHead":"0ef206c28a2c262ebfe08b9d66e6998b6109b6c6","readme":"<!-- TITLE/ -->\n\n<h1>@bevry/pluginloader</h1>\n\n<!-- /TITLE -->\n\n\n<!-- BADGES/ -->\n\n<span class=\"badge-travisci\"><a href=\"http://travis-ci.com/bevry/pluginloader\" title=\"Check this project's build status on TravisCI\"><img src=\"https://img.shields.io/travis/com/bevry/pluginloader/master.svg\" alt=\"Travis CI Build Status\" /></a></span>\n<span class=\"badge-npmversion\"><a href=\"https://npmjs.org/package/@bevry/pluginloader\" title=\"View this project on NPM\"><img src=\"https://img.shields.io/npm/v/@bevry/pluginloader.svg\" alt=\"NPM version\" /></a></span>\n<span class=\"badge-npmdownloads\"><a href=\"https://npmjs.org/package/@bevry/pluginloader\" title=\"View this project on NPM\"><img src=\"https://img.shields.io/npm/dm/@bevry/pluginloader.svg\" alt=\"NPM downloads\" /></a></span>\n<span class=\"badge-daviddm\"><a href=\"https://david-dm.org/bevry/pluginloader\" title=\"View the status of this project's dependencies on DavidDM\"><img src=\"https://img.shields.io/david/bevry/pluginloader.svg\" alt=\"Dependency Status\" /></a></span>\n<span class=\"badge-daviddmdev\"><a href=\"https://david-dm.org/bevry/pluginloader#info=devDependencies\" title=\"View the status of this project's development dependencies on DavidDM\"><img src=\"https://img.shields.io/david/dev/bevry/pluginloader.svg\" alt=\"Dev Dependency Status\" /></a></span>\n<br class=\"badge-separator\" />\n<span class=\"badge-githubsponsors\"><a href=\"https://github.com/sponsors/balupton\" title=\"Donate to this project using GitHub Sponsors\"><img src=\"https://img.shields.io/badge/github-donate-yellow.svg\" alt=\"GitHub Sponsors donate button\" /></a></span>\n<span class=\"badge-patreon\"><a href=\"https://patreon.com/bevry\" title=\"Donate to this project using Patreon\"><img src=\"https://img.shields.io/badge/patreon-donate-yellow.svg\" alt=\"Patreon donate button\" /></a></span>\n<span class=\"badge-flattr\"><a href=\"https://flattr.com/profile/balupton\" title=\"Donate to this project using Flattr\"><img src=\"https://img.shields.io/badge/flattr-donate-yellow.svg\" alt=\"Flattr donate button\" /></a></span>\n<span class=\"badge-liberapay\"><a href=\"https://liberapay.com/bevry\" title=\"Donate to this project using Liberapay\"><img src=\"https://img.shields.io/badge/liberapay-donate-yellow.svg\" alt=\"Liberapay donate button\" /></a></span>\n<span class=\"badge-buymeacoffee\"><a href=\"https://buymeacoffee.com/balupton\" title=\"Donate to this project using Buy Me A Coffee\"><img src=\"https://img.shields.io/badge/buy%20me%20a%20coffee-donate-yellow.svg\" alt=\"Buy Me A Coffee donate button\" /></a></span>\n<span class=\"badge-opencollective\"><a href=\"https://opencollective.com/bevry\" title=\"Donate to this project using Open Collective\"><img src=\"https://img.shields.io/badge/open%20collective-donate-yellow.svg\" alt=\"Open Collective donate button\" /></a></span>\n<span class=\"badge-crypto\"><a href=\"https://bevry.me/crypto\" title=\"Donate to this project using Cryptocurrency\"><img src=\"https://img.shields.io/badge/crypto-donate-yellow.svg\" alt=\"crypto donate button\" /></a></span>\n<span class=\"badge-paypal\"><a href=\"https://bevry.me/paypal\" title=\"Donate to this project using Paypal\"><img src=\"https://img.shields.io/badge/paypal-donate-yellow.svg\" alt=\"PayPal donate button\" /></a></span>\n<span class=\"badge-wishlist\"><a href=\"https://bevry.me/wishlist\" title=\"Buy an item on our wishlist for us\"><img src=\"https://img.shields.io/badge/wishlist-donate-yellow.svg\" alt=\"Wishlist browse button\" /></a></span>\n\n<!-- /BADGES -->\n\n\n<!-- DESCRIPTION/ -->\n\nA class for loading, verifying, and creating plugins. Used by DocPad for years.\n\n<!-- /DESCRIPTION -->\n\n\n## Usage\n\n[Complete API Documentation.](http://master.pluginloader.bevry.surge.sh/docs/globals.html)\n\n### Basics\n\nCreate your project:\n\n1. `mkdir my-project`\n1. `cd my-project`\n\nCreate your plugin:\n\n1. `mkdir myplugin`\n1. `cd myplugin`\n1. `npm init`\n1. `index.js` to:\n\n    ```javascript\n    module.exports = function (BasePlugin) {\n        return class MyPlugin extends BasePlugin {\n            constructor(...args) {\n                super(...args)\n                console.log('hello from my plugin')\n            }\n        }\n    }\n    ```\n\n1. `cd ..`\n\nCreate your plugin loader:\n\n1. `mkdir myapp`\n1. `cd myapp`\n1. `npm init`\n1. `index.js` to:\n\n    ```javascript\n    import PluginLoader from '@bevry/pluginloader'\n\n    class BasePlugin {\n        constructor() {\n            console.log('hello from base plugin')\n        }\n    }\n\n    const pluginLoader = new PluginLoader({\n        BasePlugin,\n        pluginPath: require('path').resolve(__dirname, '..', 'myplugin'),\n    })\n    ```\n\n1. `cd ..`\n\nRun the project:\n\n1. `node myapp/index.js`\n\n### Ecosystem\n\n-   [pluginclerk](https://github.com/bevry/pluginclerk) a project for fetching compatible plugins from the npm registry\n-   [docpad-baseplugin](https://github.com/docpad/docpad-baseplugin) the BasePlugin class that DocPad uses\n-   [docpad-plugintester](https://github.com/docpad/docpad-plugintester) testing helpers for DocPad plugins\n\n<!-- INSTALL/ -->\n\n<h2>Install</h2>\n\n<a href=\"https://npmjs.com\" title=\"npm is a package manager for javascript\"><h3>npm</h3></a>\n<ul>\n<li>Install: <code>npm install --save @bevry/pluginloader</code></li>\n<li>Import: <code>import pkg from ('@bevry/pluginloader')</code></li>\n<li>Require: <code>const pkg = require('@bevry/pluginloader').default</code></li>\n</ul>\n\n<h3><a href=\"https://editions.bevry.me\" title=\"Editions are the best way to produce and consume packages you care about.\">Editions</a></h3>\n\n<p>This package is published with the following editions:</p>\n\n<ul><li><code>@bevry/pluginloader/source/index.ts</code> is <a href=\"https://www.typescriptlang.org/\" title=\"TypeScript is a typed superset of JavaScript that compiles to plain JavaScript. \">TypeScript</a> source code with <a href=\"https://babeljs.io/docs/learn-es2015/#modules\" title=\"ECMAScript Modules\">Import</a> for modules</li>\n<li><code>@bevry/pluginloader</code> aliases <code>@bevry/pluginloader/edition-esnext/index.js</code></li>\n<li><code>@bevry/pluginloader/edition-esnext/index.js</code> is <a href=\"https://www.typescriptlang.org/\" title=\"TypeScript is a typed superset of JavaScript that compiles to plain JavaScript. \">TypeScript</a> compiled against <a href=\"https://en.wikipedia.org/wiki/ECMAScript#ES.Next\" title=\"ECMAScript Next\">ESNext</a> for <a href=\"https://nodejs.org\" title=\"Node.js is a JavaScript runtime built on Chrome's V8 JavaScript engine\">Node.js</a> 10 || 12 || 13 || 14 with <a href=\"https://nodejs.org/dist/latest-v5.x/docs/api/modules.html\" title=\"Node/CJS Modules\">Require</a> for modules</li>\n<li><code>@bevry/pluginloader/edition-node-esm/index.js</code> is <a href=\"https://www.typescriptlang.org/\" title=\"TypeScript is a typed superset of JavaScript that compiles to plain JavaScript. \">TypeScript</a> compiled against <a href=\"https://en.wikipedia.org/wiki/ECMAScript#ES.Next\" title=\"ECMAScript Next\">ESNext</a> for <a href=\"https://nodejs.org\" title=\"Node.js is a JavaScript runtime built on Chrome's V8 JavaScript engine\">Node.js</a> with <a href=\"https://babeljs.io/docs/learn-es2015/#modules\" title=\"ECMAScript Modules\">Import</a> for modules</li></ul>\n\n<!-- /INSTALL -->\n\n\n<!-- HISTORY/ -->\n\n<h2>History</h2>\n\n<a href=\"https://github.com/bevry/pluginloader/blob/master/HISTORY.md#files\">Discover the release history by heading on over to the <code>HISTORY.md</code> file.</a>\n\n<!-- /HISTORY -->\n\n\n<!-- CONTRIBUTE/ -->\n\n<h2>Contribute</h2>\n\n<a href=\"https://github.com/bevry/pluginloader/blob/master/CONTRIBUTING.md#files\">Discover how you can contribute by heading on over to the <code>CONTRIBUTING.md</code> file.</a>\n\n<!-- /CONTRIBUTE -->\n\n\n<!-- BACKERS/ -->\n\n<h2>Backers</h2>\n\n<h3>Maintainers</h3>\n\nThese amazing people are maintaining this project:\n\n<ul><li><a href=\"https://balupton.com\">Benjamin Lupton</a> — <a href=\"https://github.com/bevry/pluginloader/commits?author=balupton\" title=\"View the GitHub contributions of Benjamin Lupton on repository bevry/pluginloader\">view contributions</a></li></ul>\n\n<h3>Sponsors</h3>\n\nNo sponsors yet! Will you be the first?\n\n<span class=\"badge-githubsponsors\"><a href=\"https://github.com/sponsors/balupton\" title=\"Donate to this project using GitHub Sponsors\"><img src=\"https://img.shields.io/badge/github-donate-yellow.svg\" alt=\"GitHub Sponsors donate button\" /></a></span>\n<span class=\"badge-patreon\"><a href=\"https://patreon.com/bevry\" title=\"Donate to this project using Patreon\"><img src=\"https://img.shields.io/badge/patreon-donate-yellow.svg\" alt=\"Patreon donate button\" /></a></span>\n<span class=\"badge-flattr\"><a href=\"https://flattr.com/profile/balupton\" title=\"Donate to this project using Flattr\"><img src=\"https://img.shields.io/badge/flattr-donate-yellow.svg\" alt=\"Flattr donate button\" /></a></span>\n<span class=\"badge-liberapay\"><a href=\"https://liberapay.com/bevry\" title=\"Donate to this project using Liberapay\"><img src=\"https://img.shields.io/badge/liberapay-donate-yellow.svg\" alt=\"Liberapay donate button\" /></a></span>\n<span class=\"badge-buymeacoffee\"><a href=\"https://buymeacoffee.com/balupton\" title=\"Donate to this project using Buy Me A Coffee\"><img src=\"https://img.shields.io/badge/buy%20me%20a%20coffee-donate-yellow.svg\" alt=\"Buy Me A Coffee donate button\" /></a></span>\n<span class=\"badge-opencollective\"><a href=\"https://opencollective.com/bevry\" title=\"Donate to this project using Open Collective\"><img src=\"https://img.shields.io/badge/open%20collective-donate-yellow.svg\" alt=\"Open Collective donate button\" /></a></span>\n<span class=\"badge-crypto\"><a href=\"https://bevry.me/crypto\" title=\"Donate to this project using Cryptocurrency\"><img src=\"https://img.shields.io/badge/crypto-donate-yellow.svg\" alt=\"crypto donate button\" /></a></span>\n<span class=\"badge-paypal\"><a href=\"https://bevry.me/paypal\" title=\"Donate to this project using Paypal\"><img src=\"https://img.shields.io/badge/paypal-donate-yellow.svg\" alt=\"PayPal donate button\" /></a></span>\n<span class=\"badge-wishlist\"><a href=\"https://bevry.me/wishlist\" title=\"Buy an item on our wishlist for us\"><img src=\"https://img.shields.io/badge/wishlist-donate-yellow.svg\" alt=\"Wishlist browse button\" /></a></span>\n\n<h3>Contributors</h3>\n\nThese amazing people have contributed code to this project:\n\n<ul><li><a href=\"https://balupton.com\">Benjamin Lupton</a> — <a href=\"https://github.com/bevry/pluginloader/commits?author=balupton\" title=\"View the GitHub contributions of Benjamin Lupton on repository bevry/pluginloader\">view contributions</a></li></ul>\n\n<a href=\"https://github.com/bevry/pluginloader/blob/master/CONTRIBUTING.md#files\">Discover how you can contribute by heading on over to the <code>CONTRIBUTING.md</code> file.</a>\n\n<!-- /BACKERS -->\n\n\n<!-- LICENSE/ -->\n\n<h2>License</h2>\n\nUnless stated otherwise all works are:\n\n<ul><li>Copyright &copy; 2018+ <a href=\"https://balupton.com\">Benjamin Lupton</a></li></ul>\n\nand licensed under:\n\n<ul><li><a href=\"http://spdx.org/licenses/MIT.html\">MIT License</a></li></ul>\n\n<!-- /LICENSE -->\n","readmeFilename":"README.md","_id":"@bevry/pluginloader@4.11.0-next.1601210864.0ef206c28a2c262ebfe08b9d66e6998b6109b6c6","_nodeVersion":"14.12.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-suZw7uM4YgsqEqpEDYP5tBJWL3kl9pGihlppAJHe+pKpzUw1AynGE7p+wZl+ErA/F2Cqp4+HgUI0wQKyU4O2iw==","shasum":"dee203f5ff94693697ff54968f5d22fd2d5c15f4","tarball":"https://registry.npmjs.org/@bevry/pluginloader/-/pluginloader-4.11.0-next.1601210864.0ef206c28a2c262ebfe08b9d66e6998b6109b6c6.tgz","fileCount":13,"unpackedSize":53683,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfcInyCRA9TVsSAnZWagAAmmkP+QHf9xlEJfmHfqBLUCGf\nECmrCHL1tpy66Zpc4O2MxKvoC1mtA4hdaqSUVumuCXhI6P3CqY06ITZO7mM+\nt85C6CWxljhBcJjwzwzSmLTUCdncpCYuGsgtWVxUOopkDIoFvwWDvpYhvDTh\n1nl7SXbr7GmEcUBr3MD5Qa2YkVub0q+KB+wXx+Z8fqJ2pj9Dq1pn4sFrNQJk\nW/13aNKy54+pl+ORpCB8JkOMRey7HVtzRTtr6gzTCH72yE+Xnmc13+Q44hHw\nQYgfc3OLDLpYGtxfVU3tRD5yAVWCd0ktZLgTuYErXb+y8o+2k8BQs33ZENME\nvYbfTOxcDU6P47ATZhFLHVBtHfUHVGKxE8N5/jgs/3u290+/+LJO1dxdMxVR\nfolZl4B6nLtHaSdYycTZp+wIOWncpYz4mAwfP1FJBTogYFdPPSHQwkTP/a9G\neJsNywQLYawHuTH5DDtdEbwxoWqd9adehrmB4N7n8Rei9d09IiPt5qEt8maH\nGl5Q4B2AHtGXm2u8du1RiN7SpC8MnfBHSkEbACQf8Swc5HV9qFlu4WwFrxgs\nYe7pE73A8cMd2DmWya7lNEAvt8YKZyAIrapeWvS3+npYVVVETPTYylthKGO7\n1+8Yhr6wH8NYSZzt1+QNwWpb/PddaNB5AjVbrNwlZlkpLi9HnT/4SeUOB8vW\npsnw\r\n=Ox1w\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCyJlyL8N49G4cRGNa81SKfeK+Q54scjUVZyhHowiw8YAIhAIfh7UH08liOtQwmuLoFtH7yHHUwWVUm32xtjgkJxrZP"}]},"_npmUser":{"name":"bevryme","email":"us@bevry.me"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/pluginloader_4.11.0-next.1601210864.0ef206c28a2c262ebfe08b9d66e6998b6109b6c6_1601210866203_0.9518244260661686"},"_hasShrinkwrap":false},"4.11.0-next.1602410985.ec0281e3ece6cb6a46cee8c1a6676083c3d9a66e":{"name":"@bevry/pluginloader","version":"4.11.0-next.1602410985.ec0281e3ece6cb6a46cee8c1a6676083c3d9a66e","description":"A class for loading, verifying, and creating plugins. Used by DocPad for years.","homepage":"https://github.com/bevry/pluginloader","license":"MIT","keywords":["bevry","docpad","export-default","loader","node","plugin","plugins","typed","types","typescript"],"badges":{"list":["travisci","npmversion","npmdownloads","daviddm","daviddmdev","---","githubsponsors","patreon","flattr","liberapay","buymeacoffee","opencollective","crypto","paypal","wishlist"],"config":{"githubSponsorsUsername":"balupton","buymeacoffeeUsername":"balupton","cryptoURL":"https://bevry.me/crypto","flattrUsername":"balupton","liberapayUsername":"bevry","opencollectiveUsername":"bevry","patreonUsername":"bevry","paypalURL":"https://bevry.me/paypal","wishlistURL":"https://bevry.me/wishlist","travisTLD":"com","githubUsername":"bevry","githubRepository":"pluginloader","githubSlug":"bevry/pluginloader","npmPackageName":"@bevry/pluginloader"}},"funding":"https://bevry.me/fund","author":{"name":"2018+ Benjamin Lupton","email":"b@lupton.cc","url":"https://balupton.com"},"maintainers":[{"name":"sumitrai","email":"sumitrai96@gmail.com"},{"name":"bevryme","email":"us@bevry.me"},{"name":"balupton","email":"b@lupton.cc"}],"contributors":[{"name":"Benjamin Lupton","email":"b@lupton.cc","url":"https://github.com/balupton"}],"bugs":{"url":"https://github.com/bevry/pluginloader/issues"},"repository":{"type":"git","url":"git+https://github.com/bevry/pluginloader.git"},"engines":{"node":">=10"},"editions":[{"description":"TypeScript source code with Import for modules","directory":"source","entry":"index.ts","tags":["typescript","import"],"engines":false},{"description":"TypeScript compiled against ESNext for Node.js 10 || 12 || 13 || 14 with Require for modules","directory":"edition-esnext","entry":"index.js","tags":["javascript","esnext","require"],"engines":{"node":"10 || 12 || 13 || 14"}},{"description":"TypeScript compiled against ESNext for Node.js with Import for modules","directory":"edition-node-esm","entry":"index.js","tags":["javascript","import"],"engines":{"node":true,"browsers":false}}],"types":"./compiled-types/","type":"module","main":"edition-esnext/index.js","exports":{"node":{"import":"./edition-node-esm/index.js","require":"./edition-esnext/index.js"}},"dependencies":{"errlop":"^3.16.0","semver":"^7.3.2","typechecker":"^7.13.0"},"devDependencies":{"@bevry/update-contributors":"^1.15.0","@typescript-eslint/eslint-plugin":"^4.0.0","@typescript-eslint/parser":"^3.9.1","assert-helpers":"^7.0.1","eslint":"^7.7.0","eslint-config-bevry":"^3.19.0","eslint-config-prettier":"^6.11.0","eslint-plugin-prettier":"^3.1.4","kava":"^5.11.0","make-deno-edition":"^1.0.0","prettier":"^2.0.5","projectz":"^2.14.0","surge":"^0.21.6","typedoc":"^0.19.1","typescript":"^4.0.2","valid-directory":"^3.0.0"},"scripts":{"our:clean":"rm -Rf ./docs ./edition* ./es2015 ./es5 ./out ./.next","our:compile":"npm run our:compile:deno && npm run our:compile:edition-esnext && npm run our:compile:edition-node-esm && npm run our:compile:types","our:compile:deno":"make-deno-edition --attempt","our:compile:edition-esnext":"tsc --module commonjs --target ESNext --outDir ./edition-esnext --project tsconfig.json && ( test ! -d edition-esnext/source || ( mv edition-esnext/source edition-temp && rm -Rf edition-esnext && mv edition-temp edition-esnext ) ) && echo '{\"type\": \"commonjs\"}' > edition-esnext/package.json","our:compile:edition-node-esm":"tsc --module ESNext --target ESNext --outDir ./edition-node-esm --project tsconfig.json && ( test ! -d edition-node-esm/source || ( mv edition-node-esm/source edition-temp && rm -Rf edition-node-esm && mv edition-temp edition-node-esm ) ) && echo '{\"type\": \"module\"}' > edition-node-esm/package.json","our:compile:types":"tsc --project tsconfig.json --emitDeclarationOnly --declaration --declarationMap --declarationDir ./compiled-types && ( test ! -d compiled-types/source || ( mv compiled-types/source edition-temp && rm -Rf compiled-types && mv edition-temp compiled-types ) )","our:deploy":"echo no need for this project","our:meta":"npm run our:meta:contributors && npm run our:meta:docs && npm run our:meta:projectz","our:meta:contributors":"update-contributors","our:meta:docs":"npm run our:meta:docs:typedoc","our:meta:docs:typedoc":"rm -Rf ./docs && typedoc --mode file --exclude '**/+(*test*|node_modules)' --excludeExternals --name \"$npm_package_name\" --readme ./README.md --out ./docs ./source","our:meta:projectz":"projectz compile","our:release":"npm run our:release:prepare && npm run our:release:check-changelog && npm run our:release:check-dirty && npm run our:release:tag && npm run our:release:push","our:release:check-changelog":"cat ./HISTORY.md | grep v$npm_package_version || (echo add a changelog entry for v$npm_package_version && exit -1)","our:release:check-dirty":"git diff --exit-code","our:release:prepare":"npm run our:clean && npm run our:compile && npm run our:test && npm run our:meta","our:release:push":"git push origin master && git push origin --tags","our:release:tag":"export MESSAGE=$(cat ./HISTORY.md | sed -n \"/## v$npm_package_version/,/##/p\" | sed 's/## //' | awk 'NR>1{print buf}{buf = $0}') && test \"$MESSAGE\" || (echo 'proper changelog entry not found' && exit -1) && git tag v$npm_package_version -am \"$MESSAGE\"","our:setup":"npm run our:setup:install","our:setup:install":"npm install","our:test":"npm run our:verify && npm test","our:verify":"npm run our:verify:directory && npm run our:verify:eslint && npm run our:verify:prettier","our:verify:directory":"valid-directory","our:verify:eslint":"eslint --fix --ignore-pattern '**/*.d.ts' --ignore-pattern '**/vendor/' --ignore-pattern '**/node_modules/' --ext .mjs,.js,.jsx,.ts,.tsx ./source","our:verify:prettier":"prettier --write .","test":"node ./edition-esnext/test.js"},"eslintConfig":{"extends":["bevry"]},"prettier":{"semi":false,"singleQuote":true},"gitHead":"ec0281e3ece6cb6a46cee8c1a6676083c3d9a66e","readme":"<!-- TITLE/ -->\n\n<h1>@bevry/pluginloader</h1>\n\n<!-- /TITLE -->\n\n\n<!-- BADGES/ -->\n\n<span class=\"badge-travisci\"><a href=\"http://travis-ci.com/bevry/pluginloader\" title=\"Check this project's build status on TravisCI\"><img src=\"https://img.shields.io/travis/com/bevry/pluginloader/master.svg\" alt=\"Travis CI Build Status\" /></a></span>\n<span class=\"badge-npmversion\"><a href=\"https://npmjs.org/package/@bevry/pluginloader\" title=\"View this project on NPM\"><img src=\"https://img.shields.io/npm/v/@bevry/pluginloader.svg\" alt=\"NPM version\" /></a></span>\n<span class=\"badge-npmdownloads\"><a href=\"https://npmjs.org/package/@bevry/pluginloader\" title=\"View this project on NPM\"><img src=\"https://img.shields.io/npm/dm/@bevry/pluginloader.svg\" alt=\"NPM downloads\" /></a></span>\n<span class=\"badge-daviddm\"><a href=\"https://david-dm.org/bevry/pluginloader\" title=\"View the status of this project's dependencies on DavidDM\"><img src=\"https://img.shields.io/david/bevry/pluginloader.svg\" alt=\"Dependency Status\" /></a></span>\n<span class=\"badge-daviddmdev\"><a href=\"https://david-dm.org/bevry/pluginloader#info=devDependencies\" title=\"View the status of this project's development dependencies on DavidDM\"><img src=\"https://img.shields.io/david/dev/bevry/pluginloader.svg\" alt=\"Dev Dependency Status\" /></a></span>\n<br class=\"badge-separator\" />\n<span class=\"badge-githubsponsors\"><a href=\"https://github.com/sponsors/balupton\" title=\"Donate to this project using GitHub Sponsors\"><img src=\"https://img.shields.io/badge/github-donate-yellow.svg\" alt=\"GitHub Sponsors donate button\" /></a></span>\n<span class=\"badge-patreon\"><a href=\"https://patreon.com/bevry\" title=\"Donate to this project using Patreon\"><img src=\"https://img.shields.io/badge/patreon-donate-yellow.svg\" alt=\"Patreon donate button\" /></a></span>\n<span class=\"badge-flattr\"><a href=\"https://flattr.com/profile/balupton\" title=\"Donate to this project using Flattr\"><img src=\"https://img.shields.io/badge/flattr-donate-yellow.svg\" alt=\"Flattr donate button\" /></a></span>\n<span class=\"badge-liberapay\"><a href=\"https://liberapay.com/bevry\" title=\"Donate to this project using Liberapay\"><img src=\"https://img.shields.io/badge/liberapay-donate-yellow.svg\" alt=\"Liberapay donate button\" /></a></span>\n<span class=\"badge-buymeacoffee\"><a href=\"https://buymeacoffee.com/balupton\" title=\"Donate to this project using Buy Me A Coffee\"><img src=\"https://img.shields.io/badge/buy%20me%20a%20coffee-donate-yellow.svg\" alt=\"Buy Me A Coffee donate button\" /></a></span>\n<span class=\"badge-opencollective\"><a href=\"https://opencollective.com/bevry\" title=\"Donate to this project using Open Collective\"><img src=\"https://img.shields.io/badge/open%20collective-donate-yellow.svg\" alt=\"Open Collective donate button\" /></a></span>\n<span class=\"badge-crypto\"><a href=\"https://bevry.me/crypto\" title=\"Donate to this project using Cryptocurrency\"><img src=\"https://img.shields.io/badge/crypto-donate-yellow.svg\" alt=\"crypto donate button\" /></a></span>\n<span class=\"badge-paypal\"><a href=\"https://bevry.me/paypal\" title=\"Donate to this project using Paypal\"><img src=\"https://img.shields.io/badge/paypal-donate-yellow.svg\" alt=\"PayPal donate button\" /></a></span>\n<span class=\"badge-wishlist\"><a href=\"https://bevry.me/wishlist\" title=\"Buy an item on our wishlist for us\"><img src=\"https://img.shields.io/badge/wishlist-donate-yellow.svg\" alt=\"Wishlist browse button\" /></a></span>\n\n<!-- /BADGES -->\n\n\n<!-- DESCRIPTION/ -->\n\nA class for loading, verifying, and creating plugins. Used by DocPad for years.\n\n<!-- /DESCRIPTION -->\n\n\n## Usage\n\n[Complete API Documentation.](http://master.pluginloader.bevry.surge.sh/docs/globals.html)\n\n### Basics\n\nCreate your project:\n\n1. `mkdir my-project`\n1. `cd my-project`\n\nCreate your plugin:\n\n1. `mkdir myplugin`\n1. `cd myplugin`\n1. `npm init`\n1. `index.js` to:\n\n    ```javascript\n    module.exports = function (BasePlugin) {\n        return class MyPlugin extends BasePlugin {\n            constructor(...args) {\n                super(...args)\n                console.log('hello from my plugin')\n            }\n        }\n    }\n    ```\n\n1. `cd ..`\n\nCreate your plugin loader:\n\n1. `mkdir myapp`\n1. `cd myapp`\n1. `npm init`\n1. `index.js` to:\n\n    ```javascript\n    import PluginLoader from '@bevry/pluginloader'\n\n    class BasePlugin {\n        constructor() {\n            console.log('hello from base plugin')\n        }\n    }\n\n    const pluginLoader = new PluginLoader({\n        BasePlugin,\n        pluginPath: require('path').resolve(__dirname, '..', 'myplugin'),\n    })\n    ```\n\n1. `cd ..`\n\nRun the project:\n\n1. `node myapp/index.js`\n\n### Ecosystem\n\n-   [pluginclerk](https://github.com/bevry/pluginclerk) a project for fetching compatible plugins from the npm registry\n-   [docpad-baseplugin](https://github.com/docpad/docpad-baseplugin) the BasePlugin class that DocPad uses\n-   [docpad-plugintester](https://github.com/docpad/docpad-plugintester) testing helpers for DocPad plugins\n\n<!-- INSTALL/ -->\n\n<h2>Install</h2>\n\n<a href=\"https://npmjs.com\" title=\"npm is a package manager for javascript\"><h3>npm</h3></a>\n<ul>\n<li>Install: <code>npm install --save @bevry/pluginloader</code></li>\n<li>Import: <code>import pkg from ('@bevry/pluginloader')</code></li>\n<li>Require: <code>const pkg = require('@bevry/pluginloader').default</code></li>\n</ul>\n\n<h3><a href=\"https://editions.bevry.me\" title=\"Editions are the best way to produce and consume packages you care about.\">Editions</a></h3>\n\n<p>This package is published with the following editions:</p>\n\n<ul><li><code>@bevry/pluginloader/source/index.ts</code> is <a href=\"https://www.typescriptlang.org/\" title=\"TypeScript is a typed superset of JavaScript that compiles to plain JavaScript. \">TypeScript</a> source code with <a href=\"https://babeljs.io/docs/learn-es2015/#modules\" title=\"ECMAScript Modules\">Import</a> for modules</li>\n<li><code>@bevry/pluginloader</code> aliases <code>@bevry/pluginloader/edition-esnext/index.js</code></li>\n<li><code>@bevry/pluginloader/edition-esnext/index.js</code> is <a href=\"https://www.typescriptlang.org/\" title=\"TypeScript is a typed superset of JavaScript that compiles to plain JavaScript. \">TypeScript</a> compiled against <a href=\"https://en.wikipedia.org/wiki/ECMAScript#ES.Next\" title=\"ECMAScript Next\">ESNext</a> for <a href=\"https://nodejs.org\" title=\"Node.js is a JavaScript runtime built on Chrome's V8 JavaScript engine\">Node.js</a> 10 || 12 || 13 || 14 with <a href=\"https://nodejs.org/dist/latest-v5.x/docs/api/modules.html\" title=\"Node/CJS Modules\">Require</a> for modules</li>\n<li><code>@bevry/pluginloader/edition-node-esm/index.js</code> is <a href=\"https://www.typescriptlang.org/\" title=\"TypeScript is a typed superset of JavaScript that compiles to plain JavaScript. \">TypeScript</a> compiled against <a href=\"https://en.wikipedia.org/wiki/ECMAScript#ES.Next\" title=\"ECMAScript Next\">ESNext</a> for <a href=\"https://nodejs.org\" title=\"Node.js is a JavaScript runtime built on Chrome's V8 JavaScript engine\">Node.js</a> with <a href=\"https://babeljs.io/docs/learn-es2015/#modules\" title=\"ECMAScript Modules\">Import</a> for modules</li></ul>\n\n<!-- /INSTALL -->\n\n\n<!-- HISTORY/ -->\n\n<h2>History</h2>\n\n<a href=\"https://github.com/bevry/pluginloader/blob/master/HISTORY.md#files\">Discover the release history by heading on over to the <code>HISTORY.md</code> file.</a>\n\n<!-- /HISTORY -->\n\n\n<!-- CONTRIBUTE/ -->\n\n<h2>Contribute</h2>\n\n<a href=\"https://github.com/bevry/pluginloader/blob/master/CONTRIBUTING.md#files\">Discover how you can contribute by heading on over to the <code>CONTRIBUTING.md</code> file.</a>\n\n<!-- /CONTRIBUTE -->\n\n\n<!-- BACKERS/ -->\n\n<h2>Backers</h2>\n\n<h3>Maintainers</h3>\n\nThese amazing people are maintaining this project:\n\n<ul><li><a href=\"https://balupton.com\">Benjamin Lupton</a> — <a href=\"https://github.com/bevry/pluginloader/commits?author=balupton\" title=\"View the GitHub contributions of Benjamin Lupton on repository bevry/pluginloader\">view contributions</a></li></ul>\n\n<h3>Sponsors</h3>\n\nNo sponsors yet! Will you be the first?\n\n<span class=\"badge-githubsponsors\"><a href=\"https://github.com/sponsors/balupton\" title=\"Donate to this project using GitHub Sponsors\"><img src=\"https://img.shields.io/badge/github-donate-yellow.svg\" alt=\"GitHub Sponsors donate button\" /></a></span>\n<span class=\"badge-patreon\"><a href=\"https://patreon.com/bevry\" title=\"Donate to this project using Patreon\"><img src=\"https://img.shields.io/badge/patreon-donate-yellow.svg\" alt=\"Patreon donate button\" /></a></span>\n<span class=\"badge-flattr\"><a href=\"https://flattr.com/profile/balupton\" title=\"Donate to this project using Flattr\"><img src=\"https://img.shields.io/badge/flattr-donate-yellow.svg\" alt=\"Flattr donate button\" /></a></span>\n<span class=\"badge-liberapay\"><a href=\"https://liberapay.com/bevry\" title=\"Donate to this project using Liberapay\"><img src=\"https://img.shields.io/badge/liberapay-donate-yellow.svg\" alt=\"Liberapay donate button\" /></a></span>\n<span class=\"badge-buymeacoffee\"><a href=\"https://buymeacoffee.com/balupton\" title=\"Donate to this project using Buy Me A Coffee\"><img src=\"https://img.shields.io/badge/buy%20me%20a%20coffee-donate-yellow.svg\" alt=\"Buy Me A Coffee donate button\" /></a></span>\n<span class=\"badge-opencollective\"><a href=\"https://opencollective.com/bevry\" title=\"Donate to this project using Open Collective\"><img src=\"https://img.shields.io/badge/open%20collective-donate-yellow.svg\" alt=\"Open Collective donate button\" /></a></span>\n<span class=\"badge-crypto\"><a href=\"https://bevry.me/crypto\" title=\"Donate to this project using Cryptocurrency\"><img src=\"https://img.shields.io/badge/crypto-donate-yellow.svg\" alt=\"crypto donate button\" /></a></span>\n<span class=\"badge-paypal\"><a href=\"https://bevry.me/paypal\" title=\"Donate to this project using Paypal\"><img src=\"https://img.shields.io/badge/paypal-donate-yellow.svg\" alt=\"PayPal donate button\" /></a></span>\n<span class=\"badge-wishlist\"><a href=\"https://bevry.me/wishlist\" title=\"Buy an item on our wishlist for us\"><img src=\"https://img.shields.io/badge/wishlist-donate-yellow.svg\" alt=\"Wishlist browse button\" /></a></span>\n\n<h3>Contributors</h3>\n\nThese amazing people have contributed code to this project:\n\n<ul><li><a href=\"https://balupton.com\">Benjamin Lupton</a> — <a href=\"https://github.com/bevry/pluginloader/commits?author=balupton\" title=\"View the GitHub contributions of Benjamin Lupton on repository bevry/pluginloader\">view contributions</a></li></ul>\n\n<a href=\"https://github.com/bevry/pluginloader/blob/master/CONTRIBUTING.md#files\">Discover how you can contribute by heading on over to the <code>CONTRIBUTING.md</code> file.</a>\n\n<!-- /BACKERS -->\n\n\n<!-- LICENSE/ -->\n\n<h2>License</h2>\n\nUnless stated otherwise all works are:\n\n<ul><li>Copyright &copy; 2018+ <a href=\"https://balupton.com\">Benjamin Lupton</a></li></ul>\n\nand licensed under:\n\n<ul><li><a href=\"http://spdx.org/licenses/MIT.html\">MIT License</a></li></ul>\n\n<!-- /LICENSE -->\n","readmeFilename":"README.md","_id":"@bevry/pluginloader@4.11.0-next.1602410985.ec0281e3ece6cb6a46cee8c1a6676083c3d9a66e","_nodeVersion":"14.13.1","_npmVersion":"6.14.8","dist":{"integrity":"sha512-oVNRIvFDF8Z2A6XD1uYLD/mpw6iWUScT7pdh5lIayIrd7KAi/OBDa7zvvYyfUMSU4oA8hjvlL+mLeuW5TDPGvA==","shasum":"b57c31e43e16cd0bcb82d5d681dfd44539c510fb","tarball":"https://registry.npmjs.org/@bevry/pluginloader/-/pluginloader-4.11.0-next.1602410985.ec0281e3ece6cb6a46cee8c1a6676083c3d9a66e.tgz","fileCount":13,"unpackedSize":53683,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfgtnrCRA9TVsSAnZWagAAstgP/08Q0zgp/H2quSXfBGEm\nta1NHldkUYmYUrsWRDffM7p2wERNDh6923Zi8tKiQa9vOVb5hZZR8gM1Syad\n3oZsRPnHAa2lwHFvTyBXvJPlT6yF3xWLOppFyfcRHObLDRtYFKdw+l6PEOQT\nKJJ3gpGTnPVg4id/+5O7TI/ccK/LbBdtIObiHKrXpfy1sAsk+8paLgahCdcc\nLc2NmUmleBgKEx7l5Drd7y/GSczoo+wYRm2UGRA71DqTNEPIS4w5fRhpcRNf\n7vby8ms1qexPiXh77SO4VQviFDNU9brXVFbcopjpAFTDa8GPWSrusfbMy+/C\nxw+dgEnKDi6BHOob0sm+FBW2f7RZp6Wggb/TCiTQ5rD17DF/o5HhARwJNORy\nYvgUSptNHHY1Mzoex//PaxASI5orJ0ZCyUkd4lGM82sOKhisZr+UNAzl7zas\nedNsv65vwkxADwryeMXYV05RkSfD3+s4QAPODNuaG/xVpONwQOj+xiDe/wpw\nAVmb0UrK4JZonIHdYiU7CYjaRDJSd9fumxEaCdKOth+IjeGcsXaOD5Ms3XYy\nn9+AXWeAuG303+AKNJwjxzOt9tgUXiZH1RvMMuj+Zppi2czAOjNiic7taXmG\n8Fi2VlgoueLWMob3zVFHX2EhoFjAoMwpR6Isyyx893AtvE/GO0GW0xA181fl\njuhM\r\n=DDNB\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEXs1lDj1L4vXiXgaD8K9kKx2+ZnxuGPa7294eiX6Z83AiEAttdRbPeHRAxR+4OReH71hsy/GV1kdBslzG1FJk7zXlo="}]},"_npmUser":{"name":"bevryme","email":"us@bevry.me"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/pluginloader_4.11.0-next.1602410985.ec0281e3ece6cb6a46cee8c1a6676083c3d9a66e_1602410986737_0.17391979508157895"},"_hasShrinkwrap":false},"4.11.0-next.1603017599.e1d3f91bfcb877664a83fdc4afa8408cfd15df3b":{"name":"@bevry/pluginloader","version":"4.11.0-next.1603017599.e1d3f91bfcb877664a83fdc4afa8408cfd15df3b","description":"A class for loading, verifying, and creating plugins. Used by DocPad for years.","homepage":"https://github.com/bevry/pluginloader","license":"MIT","keywords":["bevry","docpad","export-default","loader","node","plugin","plugins","typed","types","typescript"],"badges":{"list":["travisci","npmversion","npmdownloads","daviddm","daviddmdev","---","githubsponsors","patreon","flattr","liberapay","buymeacoffee","opencollective","crypto","paypal","wishlist"],"config":{"githubSponsorsUsername":"balupton","buymeacoffeeUsername":"balupton","cryptoURL":"https://bevry.me/crypto","flattrUsername":"balupton","liberapayUsername":"bevry","opencollectiveUsername":"bevry","patreonUsername":"bevry","paypalURL":"https://bevry.me/paypal","wishlistURL":"https://bevry.me/wishlist","travisTLD":"com","githubUsername":"bevry","githubRepository":"pluginloader","githubSlug":"bevry/pluginloader","npmPackageName":"@bevry/pluginloader"}},"funding":"https://bevry.me/fund","author":{"name":"2018+ Benjamin Lupton","email":"b@lupton.cc","url":"https://balupton.com"},"maintainers":[{"name":"sumitrai","email":"sumitrai96@gmail.com"},{"name":"bevryme","email":"us@bevry.me"},{"name":"balupton","email":"b@lupton.cc"}],"contributors":[{"name":"Benjamin Lupton","email":"b@lupton.cc","url":"https://github.com/balupton"}],"bugs":{"url":"https://github.com/bevry/pluginloader/issues"},"repository":{"type":"git","url":"git+https://github.com/bevry/pluginloader.git"},"engines":{"node":">=10"},"editions":[{"description":"TypeScript source code with Import for modules","directory":"source","entry":"index.ts","tags":["typescript","import"],"engines":false},{"description":"TypeScript compiled against ESNext for Node.js 10 || 12 || 13 || 14 with Require for modules","directory":"edition-esnext","entry":"index.js","tags":["javascript","esnext","require"],"engines":{"node":"10 || 12 || 13 || 14"}},{"description":"TypeScript compiled against ESNext for Node.js with Import for modules","directory":"edition-node-esm","entry":"index.js","tags":["javascript","import"],"engines":{"node":true,"browsers":false}}],"types":"./compiled-types/","type":"module","main":"edition-esnext/index.js","exports":{"node":{"import":"./edition-node-esm/index.js","require":"./edition-esnext/index.js"}},"dependencies":{"errlop":"^3.16.0","semver":"^7.3.2","typechecker":"^7.13.0"},"devDependencies":{"@bevry/update-contributors":"^1.15.0","@typescript-eslint/eslint-plugin":"^4.0.0","@typescript-eslint/parser":"^3.9.1","assert-helpers":"^7.0.1","eslint":"^7.7.0","eslint-config-bevry":"^3.19.0","eslint-config-prettier":"^6.11.0","eslint-plugin-prettier":"^3.1.4","kava":"^5.11.0","make-deno-edition":"^1.0.0","prettier":"^2.0.5","projectz":"^2.14.0","surge":"^0.21.6","typedoc":"^0.19.1","typescript":"^4.0.2","valid-directory":"^3.0.0"},"scripts":{"our:clean":"rm -Rf ./docs ./edition* ./es2015 ./es5 ./out ./.next","our:compile":"npm run our:compile:deno && npm run our:compile:edition-esnext && npm run our:compile:edition-node-esm && npm run our:compile:types","our:compile:deno":"make-deno-edition --attempt","our:compile:edition-esnext":"tsc --module commonjs --target ESNext --outDir ./edition-esnext --project tsconfig.json && ( test ! -d edition-esnext/source || ( mv edition-esnext/source edition-temp && rm -Rf edition-esnext && mv edition-temp edition-esnext ) ) && echo '{\"type\": \"commonjs\"}' > edition-esnext/package.json","our:compile:edition-node-esm":"tsc --module ESNext --target ESNext --outDir ./edition-node-esm --project tsconfig.json && ( test ! -d edition-node-esm/source || ( mv edition-node-esm/source edition-temp && rm -Rf edition-node-esm && mv edition-temp edition-node-esm ) ) && echo '{\"type\": \"module\"}' > edition-node-esm/package.json","our:compile:types":"tsc --project tsconfig.json --emitDeclarationOnly --declaration --declarationMap --declarationDir ./compiled-types && ( test ! -d compiled-types/source || ( mv compiled-types/source edition-temp && rm -Rf compiled-types && mv edition-temp compiled-types ) )","our:deploy":"echo no need for this project","our:meta":"npm run our:meta:contributors && npm run our:meta:docs && npm run our:meta:projectz","our:meta:contributors":"update-contributors","our:meta:docs":"npm run our:meta:docs:typedoc","our:meta:docs:typedoc":"rm -Rf ./docs && typedoc --mode file --exclude '**/+(*test*|node_modules)' --excludeExternals --name \"$npm_package_name\" --readme ./README.md --out ./docs ./source","our:meta:projectz":"projectz compile","our:release":"npm run our:release:prepare && npm run our:release:check-changelog && npm run our:release:check-dirty && npm run our:release:tag && npm run our:release:push","our:release:check-changelog":"cat ./HISTORY.md | grep v$npm_package_version || (echo add a changelog entry for v$npm_package_version && exit -1)","our:release:check-dirty":"git diff --exit-code","our:release:prepare":"npm run our:clean && npm run our:compile && npm run our:test && npm run our:meta","our:release:push":"git push origin master && git push origin --tags","our:release:tag":"export MESSAGE=$(cat ./HISTORY.md | sed -n \"/## v$npm_package_version/,/##/p\" | sed 's/## //' | awk 'NR>1{print buf}{buf = $0}') && test \"$MESSAGE\" || (echo 'proper changelog entry not found' && exit -1) && git tag v$npm_package_version -am \"$MESSAGE\"","our:setup":"npm run our:setup:install","our:setup:install":"npm install","our:test":"npm run our:verify && npm test","our:verify":"npm run our:verify:directory && npm run our:verify:eslint && npm run our:verify:prettier","our:verify:directory":"valid-directory","our:verify:eslint":"eslint --fix --ignore-pattern '**/*.d.ts' --ignore-pattern '**/vendor/' --ignore-pattern '**/node_modules/' --ext .mjs,.js,.jsx,.ts,.tsx ./source","our:verify:prettier":"prettier --write .","test":"node ./edition-esnext/test.js"},"eslintConfig":{"extends":["bevry"]},"prettier":{"semi":false,"singleQuote":true},"gitHead":"e1d3f91bfcb877664a83fdc4afa8408cfd15df3b","readme":"<!-- TITLE/ -->\n\n<h1>@bevry/pluginloader</h1>\n\n<!-- /TITLE -->\n\n\n<!-- BADGES/ -->\n\n<span class=\"badge-travisci\"><a href=\"http://travis-ci.com/bevry/pluginloader\" title=\"Check this project's build status on TravisCI\"><img src=\"https://img.shields.io/travis/com/bevry/pluginloader/master.svg\" alt=\"Travis CI Build Status\" /></a></span>\n<span class=\"badge-npmversion\"><a href=\"https://npmjs.org/package/@bevry/pluginloader\" title=\"View this project on NPM\"><img src=\"https://img.shields.io/npm/v/@bevry/pluginloader.svg\" alt=\"NPM version\" /></a></span>\n<span class=\"badge-npmdownloads\"><a href=\"https://npmjs.org/package/@bevry/pluginloader\" title=\"View this project on NPM\"><img src=\"https://img.shields.io/npm/dm/@bevry/pluginloader.svg\" alt=\"NPM downloads\" /></a></span>\n<span class=\"badge-daviddm\"><a href=\"https://david-dm.org/bevry/pluginloader\" title=\"View the status of this project's dependencies on DavidDM\"><img src=\"https://img.shields.io/david/bevry/pluginloader.svg\" alt=\"Dependency Status\" /></a></span>\n<span class=\"badge-daviddmdev\"><a href=\"https://david-dm.org/bevry/pluginloader#info=devDependencies\" title=\"View the status of this project's development dependencies on DavidDM\"><img src=\"https://img.shields.io/david/dev/bevry/pluginloader.svg\" alt=\"Dev Dependency Status\" /></a></span>\n<br class=\"badge-separator\" />\n<span class=\"badge-githubsponsors\"><a href=\"https://github.com/sponsors/balupton\" title=\"Donate to this project using GitHub Sponsors\"><img src=\"https://img.shields.io/badge/github-donate-yellow.svg\" alt=\"GitHub Sponsors donate button\" /></a></span>\n<span class=\"badge-patreon\"><a href=\"https://patreon.com/bevry\" title=\"Donate to this project using Patreon\"><img src=\"https://img.shields.io/badge/patreon-donate-yellow.svg\" alt=\"Patreon donate button\" /></a></span>\n<span class=\"badge-flattr\"><a href=\"https://flattr.com/profile/balupton\" title=\"Donate to this project using Flattr\"><img src=\"https://img.shields.io/badge/flattr-donate-yellow.svg\" alt=\"Flattr donate button\" /></a></span>\n<span class=\"badge-liberapay\"><a href=\"https://liberapay.com/bevry\" title=\"Donate to this project using Liberapay\"><img src=\"https://img.shields.io/badge/liberapay-donate-yellow.svg\" alt=\"Liberapay donate button\" /></a></span>\n<span class=\"badge-buymeacoffee\"><a href=\"https://buymeacoffee.com/balupton\" title=\"Donate to this project using Buy Me A Coffee\"><img src=\"https://img.shields.io/badge/buy%20me%20a%20coffee-donate-yellow.svg\" alt=\"Buy Me A Coffee donate button\" /></a></span>\n<span class=\"badge-opencollective\"><a href=\"https://opencollective.com/bevry\" title=\"Donate to this project using Open Collective\"><img src=\"https://img.shields.io/badge/open%20collective-donate-yellow.svg\" alt=\"Open Collective donate button\" /></a></span>\n<span class=\"badge-crypto\"><a href=\"https://bevry.me/crypto\" title=\"Donate to this project using Cryptocurrency\"><img src=\"https://img.shields.io/badge/crypto-donate-yellow.svg\" alt=\"crypto donate button\" /></a></span>\n<span class=\"badge-paypal\"><a href=\"https://bevry.me/paypal\" title=\"Donate to this project using Paypal\"><img src=\"https://img.shields.io/badge/paypal-donate-yellow.svg\" alt=\"PayPal donate button\" /></a></span>\n<span class=\"badge-wishlist\"><a href=\"https://bevry.me/wishlist\" title=\"Buy an item on our wishlist for us\"><img src=\"https://img.shields.io/badge/wishlist-donate-yellow.svg\" alt=\"Wishlist browse button\" /></a></span>\n\n<!-- /BADGES -->\n\n\n<!-- DESCRIPTION/ -->\n\nA class for loading, verifying, and creating plugins. Used by DocPad for years.\n\n<!-- /DESCRIPTION -->\n\n\n## Usage\n\n[Complete API Documentation.](http://master.pluginloader.bevry.surge.sh/docs/globals.html)\n\n### Basics\n\nCreate your project:\n\n1. `mkdir my-project`\n1. `cd my-project`\n\nCreate your plugin:\n\n1. `mkdir myplugin`\n1. `cd myplugin`\n1. `npm init`\n1. `index.js` to:\n\n    ```javascript\n    module.exports = function (BasePlugin) {\n        return class MyPlugin extends BasePlugin {\n            constructor(...args) {\n                super(...args)\n                console.log('hello from my plugin')\n            }\n        }\n    }\n    ```\n\n1. `cd ..`\n\nCreate your plugin loader:\n\n1. `mkdir myapp`\n1. `cd myapp`\n1. `npm init`\n1. `index.js` to:\n\n    ```javascript\n    import PluginLoader from '@bevry/pluginloader'\n\n    class BasePlugin {\n        constructor() {\n            console.log('hello from base plugin')\n        }\n    }\n\n    const pluginLoader = new PluginLoader({\n        BasePlugin,\n        pluginPath: require('path').resolve(__dirname, '..', 'myplugin'),\n    })\n    ```\n\n1. `cd ..`\n\nRun the project:\n\n1. `node myapp/index.js`\n\n### Ecosystem\n\n-   [pluginclerk](https://github.com/bevry/pluginclerk) a project for fetching compatible plugins from the npm registry\n-   [docpad-baseplugin](https://github.com/docpad/docpad-baseplugin) the BasePlugin class that DocPad uses\n-   [docpad-plugintester](https://github.com/docpad/docpad-plugintester) testing helpers for DocPad plugins\n\n<!-- INSTALL/ -->\n\n<h2>Install</h2>\n\n<a href=\"https://npmjs.com\" title=\"npm is a package manager for javascript\"><h3>npm</h3></a>\n<ul>\n<li>Install: <code>npm install --save @bevry/pluginloader</code></li>\n<li>Import: <code>import pkg from ('@bevry/pluginloader')</code></li>\n<li>Require: <code>const pkg = require('@bevry/pluginloader').default</code></li>\n</ul>\n\n<h3><a href=\"https://editions.bevry.me\" title=\"Editions are the best way to produce and consume packages you care about.\">Editions</a></h3>\n\n<p>This package is published with the following editions:</p>\n\n<ul><li><code>@bevry/pluginloader/source/index.ts</code> is <a href=\"https://www.typescriptlang.org/\" title=\"TypeScript is a typed superset of JavaScript that compiles to plain JavaScript. \">TypeScript</a> source code with <a href=\"https://babeljs.io/docs/learn-es2015/#modules\" title=\"ECMAScript Modules\">Import</a> for modules</li>\n<li><code>@bevry/pluginloader</code> aliases <code>@bevry/pluginloader/edition-esnext/index.js</code></li>\n<li><code>@bevry/pluginloader/edition-esnext/index.js</code> is <a href=\"https://www.typescriptlang.org/\" title=\"TypeScript is a typed superset of JavaScript that compiles to plain JavaScript. \">TypeScript</a> compiled against <a href=\"https://en.wikipedia.org/wiki/ECMAScript#ES.Next\" title=\"ECMAScript Next\">ESNext</a> for <a href=\"https://nodejs.org\" title=\"Node.js is a JavaScript runtime built on Chrome's V8 JavaScript engine\">Node.js</a> 10 || 12 || 13 || 14 with <a href=\"https://nodejs.org/dist/latest-v5.x/docs/api/modules.html\" title=\"Node/CJS Modules\">Require</a> for modules</li>\n<li><code>@bevry/pluginloader/edition-node-esm/index.js</code> is <a href=\"https://www.typescriptlang.org/\" title=\"TypeScript is a typed superset of JavaScript that compiles to plain JavaScript. \">TypeScript</a> compiled against <a href=\"https://en.wikipedia.org/wiki/ECMAScript#ES.Next\" title=\"ECMAScript Next\">ESNext</a> for <a href=\"https://nodejs.org\" title=\"Node.js is a JavaScript runtime built on Chrome's V8 JavaScript engine\">Node.js</a> with <a href=\"https://babeljs.io/docs/learn-es2015/#modules\" title=\"ECMAScript Modules\">Import</a> for modules</li></ul>\n\n<!-- /INSTALL -->\n\n\n<!-- HISTORY/ -->\n\n<h2>History</h2>\n\n<a href=\"https://github.com/bevry/pluginloader/blob/master/HISTORY.md#files\">Discover the release history by heading on over to the <code>HISTORY.md</code> file.</a>\n\n<!-- /HISTORY -->\n\n\n<!-- CONTRIBUTE/ -->\n\n<h2>Contribute</h2>\n\n<a href=\"https://github.com/bevry/pluginloader/blob/master/CONTRIBUTING.md#files\">Discover how you can contribute by heading on over to the <code>CONTRIBUTING.md</code> file.</a>\n\n<!-- /CONTRIBUTE -->\n\n\n<!-- BACKERS/ -->\n\n<h2>Backers</h2>\n\n<h3>Maintainers</h3>\n\nThese amazing people are maintaining this project:\n\n<ul><li><a href=\"https://balupton.com\">Benjamin Lupton</a> — <a href=\"https://github.com/bevry/pluginloader/commits?author=balupton\" title=\"View the GitHub contributions of Benjamin Lupton on repository bevry/pluginloader\">view contributions</a></li></ul>\n\n<h3>Sponsors</h3>\n\nNo sponsors yet! Will you be the first?\n\n<span class=\"badge-githubsponsors\"><a href=\"https://github.com/sponsors/balupton\" title=\"Donate to this project using GitHub Sponsors\"><img src=\"https://img.shields.io/badge/github-donate-yellow.svg\" alt=\"GitHub Sponsors donate button\" /></a></span>\n<span class=\"badge-patreon\"><a href=\"https://patreon.com/bevry\" title=\"Donate to this project using Patreon\"><img src=\"https://img.shields.io/badge/patreon-donate-yellow.svg\" alt=\"Patreon donate button\" /></a></span>\n<span class=\"badge-flattr\"><a href=\"https://flattr.com/profile/balupton\" title=\"Donate to this project using Flattr\"><img src=\"https://img.shields.io/badge/flattr-donate-yellow.svg\" alt=\"Flattr donate button\" /></a></span>\n<span class=\"badge-liberapay\"><a href=\"https://liberapay.com/bevry\" title=\"Donate to this project using Liberapay\"><img src=\"https://img.shields.io/badge/liberapay-donate-yellow.svg\" alt=\"Liberapay donate button\" /></a></span>\n<span class=\"badge-buymeacoffee\"><a href=\"https://buymeacoffee.com/balupton\" title=\"Donate to this project using Buy Me A Coffee\"><img src=\"https://img.shields.io/badge/buy%20me%20a%20coffee-donate-yellow.svg\" alt=\"Buy Me A Coffee donate button\" /></a></span>\n<span class=\"badge-opencollective\"><a href=\"https://opencollective.com/bevry\" title=\"Donate to this project using Open Collective\"><img src=\"https://img.shields.io/badge/open%20collective-donate-yellow.svg\" alt=\"Open Collective donate button\" /></a></span>\n<span class=\"badge-crypto\"><a href=\"https://bevry.me/crypto\" title=\"Donate to this project using Cryptocurrency\"><img src=\"https://img.shields.io/badge/crypto-donate-yellow.svg\" alt=\"crypto donate button\" /></a></span>\n<span class=\"badge-paypal\"><a href=\"https://bevry.me/paypal\" title=\"Donate to this project using Paypal\"><img src=\"https://img.shields.io/badge/paypal-donate-yellow.svg\" alt=\"PayPal donate button\" /></a></span>\n<span class=\"badge-wishlist\"><a href=\"https://bevry.me/wishlist\" title=\"Buy an item on our wishlist for us\"><img src=\"https://img.shields.io/badge/wishlist-donate-yellow.svg\" alt=\"Wishlist browse button\" /></a></span>\n\n<h3>Contributors</h3>\n\nThese amazing people have contributed code to this project:\n\n<ul><li><a href=\"https://balupton.com\">Benjamin Lupton</a> — <a href=\"https://github.com/bevry/pluginloader/commits?author=balupton\" title=\"View the GitHub contributions of Benjamin Lupton on repository bevry/pluginloader\">view contributions</a></li></ul>\n\n<a href=\"https://github.com/bevry/pluginloader/blob/master/CONTRIBUTING.md#files\">Discover how you can contribute by heading on over to the <code>CONTRIBUTING.md</code> file.</a>\n\n<!-- /BACKERS -->\n\n\n<!-- LICENSE/ -->\n\n<h2>License</h2>\n\nUnless stated otherwise all works are:\n\n<ul><li>Copyright &copy; 2018+ <a href=\"https://balupton.com\">Benjamin Lupton</a></li></ul>\n\nand licensed under:\n\n<ul><li><a href=\"http://spdx.org/licenses/MIT.html\">MIT License</a></li></ul>\n\n<!-- /LICENSE -->\n","readmeFilename":"README.md","_id":"@bevry/pluginloader@4.11.0-next.1603017599.e1d3f91bfcb877664a83fdc4afa8408cfd15df3b","_nodeVersion":"14.14.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-2lbr4CGFPKfscQh4oflBb/JG4lfIPu2aEowQXlxYPhSBvVeUVYijJdPwsKowqrMts+GVXSsQmVyi2CX+x+P8ng==","shasum":"061d3752f836e8067507be5407cf7d2d76ee68bd","tarball":"https://registry.npmjs.org/@bevry/pluginloader/-/pluginloader-4.11.0-next.1603017599.e1d3f91bfcb877664a83fdc4afa8408cfd15df3b.tgz","fileCount":13,"unpackedSize":53683,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfjBuBCRA9TVsSAnZWagAArZwP/R2Pa500sOCzny/8FA2e\n0LoQwp3lsZRgP6NWd5pdRlo89yqdP/HFQTdfquFfNSdNtfk9bnSPM2BHjyCZ\niVIMtG6BkUrNiQM0fUTniET0nVk0fgRUT34is3WBfPV3X6p1rINeWrW9sh9V\nLhxsB4P96x2hdVTAUEnRuK4iCW1Ub9E/ePuiqt/ZfVgb3MzA9aI+rldOC4+5\n8XRBc1HfW02vPeXC9Knn+BGDG2QYWas6QzNgd/FtObodGgc100P8KLLQMAom\nrXlMiaz2mlkUcpin6t2NHrt8b+qast0iGnAMHgdWE3QLgKhxxwxhI4q614Et\nEO39fusGBQzaSqybos9fZx45PmN66oJCh8zgJYPUIJ0UQvOYTybDCpTDdXx3\nZoI7BYYiplKMZKeARI/RMwH+Q3ZAvuzWN4/3mA+nB6mXJFvnn/kR+Bqc9/pC\nIiasDiDeHqM3GwbeudYPVT/rG3ExbmCV1jnphf3EM8qm5xktiG31nEFbW7Ud\nNTJ6H0FDYJRrwEciJRra/r9NXqBnuyyf1EJOVipzFHlgFk1F+FKHzPzZreTV\n9uGuRlauGsaLpeOTJCWLXsX1WTigDejEFU5U+0aw/RjcWEZQenxpihO99w2X\noSeCrkmNZPWz19bd8MgADnzWGv3q6N8+P2aKvfA/i2sCA0Y5TNGYWuEmVknt\nmMPB\r\n=YIct\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDijKT3e94Bn/5Z4YmZpGk9sqcgOM1TIQmFgvPpUZGaQgIhAPD9LgVpnkqJqie1qAPjKOi72jYHdrBa9YG9045Kjxqx"}]},"_npmUser":{"name":"bevryme","email":"us@bevry.me"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/pluginloader_4.11.0-next.1603017599.e1d3f91bfcb877664a83fdc4afa8408cfd15df3b_1603017600978_0.30805794767747985"},"_hasShrinkwrap":false},"4.11.0-next.1603628094.708a16c4b435e8ca3804e25c8b6f9580facb3612":{"name":"@bevry/pluginloader","version":"4.11.0-next.1603628094.708a16c4b435e8ca3804e25c8b6f9580facb3612","description":"A class for loading, verifying, and creating plugins. Used by DocPad for years.","homepage":"https://github.com/bevry/pluginloader","license":"MIT","keywords":["bevry","docpad","export-default","loader","node","plugin","plugins","typed","types","typescript"],"badges":{"list":["travisci","npmversion","npmdownloads","daviddm","daviddmdev","---","githubsponsors","patreon","flattr","liberapay","buymeacoffee","opencollective","crypto","paypal","wishlist"],"config":{"githubSponsorsUsername":"balupton","buymeacoffeeUsername":"balupton","cryptoURL":"https://bevry.me/crypto","flattrUsername":"balupton","liberapayUsername":"bevry","opencollectiveUsername":"bevry","patreonUsername":"bevry","paypalURL":"https://bevry.me/paypal","wishlistURL":"https://bevry.me/wishlist","travisTLD":"com","githubUsername":"bevry","githubRepository":"pluginloader","githubSlug":"bevry/pluginloader","npmPackageName":"@bevry/pluginloader"}},"funding":"https://bevry.me/fund","author":{"name":"2018+ Benjamin Lupton","email":"b@lupton.cc","url":"https://balupton.com"},"maintainers":[{"name":"sumitrai","email":"sumitrai96@gmail.com"},{"name":"bevryme","email":"us@bevry.me"},{"name":"balupton","email":"b@lupton.cc"}],"contributors":[{"name":"Benjamin Lupton","email":"b@lupton.cc","url":"https://github.com/balupton"}],"bugs":{"url":"https://github.com/bevry/pluginloader/issues"},"repository":{"type":"git","url":"git+https://github.com/bevry/pluginloader.git"},"engines":{"node":">=10"},"editions":[{"description":"TypeScript source code with Import for modules","directory":"source","entry":"index.ts","tags":["typescript","import"],"engines":false},{"description":"TypeScript compiled against ESNext for Node.js 10 || 12 || 13 || 14 with Require for modules","directory":"edition-esnext","entry":"index.js","tags":["javascript","esnext","require"],"engines":{"node":"10 || 12 || 13 || 14"}},{"description":"TypeScript compiled against ESNext for Node.js with Import for modules","directory":"edition-node-esm","entry":"index.js","tags":["javascript","import"],"engines":{"node":true,"browsers":false}}],"types":"./compiled-types/","type":"module","main":"edition-esnext/index.js","exports":{"node":{"import":"./edition-node-esm/index.js","require":"./edition-esnext/index.js"}},"dependencies":{"errlop":"^3.16.0","semver":"^7.3.2","typechecker":"^7.13.0"},"devDependencies":{"@bevry/update-contributors":"^1.15.0","@typescript-eslint/eslint-plugin":"^4.0.0","@typescript-eslint/parser":"^3.9.1","assert-helpers":"^7.0.1","eslint":"^7.7.0","eslint-config-bevry":"^3.19.0","eslint-config-prettier":"^6.11.0","eslint-plugin-prettier":"^3.1.4","kava":"^5.11.0","make-deno-edition":"^1.0.0","prettier":"^2.0.5","projectz":"^2.14.0","surge":"^0.21.6","typedoc":"^0.19.1","typescript":"^4.0.2","valid-directory":"^3.0.0"},"scripts":{"our:clean":"rm -Rf ./docs ./edition* ./es2015 ./es5 ./out ./.next","our:compile":"npm run our:compile:deno && npm run our:compile:edition-esnext && npm run our:compile:edition-node-esm && npm run our:compile:types","our:compile:deno":"make-deno-edition --attempt","our:compile:edition-esnext":"tsc --module commonjs --target ESNext --outDir ./edition-esnext --project tsconfig.json && ( test ! -d edition-esnext/source || ( mv edition-esnext/source edition-temp && rm -Rf edition-esnext && mv edition-temp edition-esnext ) ) && echo '{\"type\": \"commonjs\"}' > edition-esnext/package.json","our:compile:edition-node-esm":"tsc --module ESNext --target ESNext --outDir ./edition-node-esm --project tsconfig.json && ( test ! -d edition-node-esm/source || ( mv edition-node-esm/source edition-temp && rm -Rf edition-node-esm && mv edition-temp edition-node-esm ) ) && echo '{\"type\": \"module\"}' > edition-node-esm/package.json","our:compile:types":"tsc --project tsconfig.json --emitDeclarationOnly --declaration --declarationMap --declarationDir ./compiled-types && ( test ! -d compiled-types/source || ( mv compiled-types/source edition-temp && rm -Rf compiled-types && mv edition-temp compiled-types ) )","our:deploy":"echo no need for this project","our:meta":"npm run our:meta:contributors && npm run our:meta:docs && npm run our:meta:projectz","our:meta:contributors":"update-contributors","our:meta:docs":"npm run our:meta:docs:typedoc","our:meta:docs:typedoc":"rm -Rf ./docs && typedoc --mode file --exclude '**/+(*test*|node_modules)' --excludeExternals --name \"$npm_package_name\" --readme ./README.md --out ./docs ./source","our:meta:projectz":"projectz compile","our:release":"npm run our:release:prepare && npm run our:release:check-changelog && npm run our:release:check-dirty && npm run our:release:tag && npm run our:release:push","our:release:check-changelog":"cat ./HISTORY.md | grep v$npm_package_version || (echo add a changelog entry for v$npm_package_version && exit -1)","our:release:check-dirty":"git diff --exit-code","our:release:prepare":"npm run our:clean && npm run our:compile && npm run our:test && npm run our:meta","our:release:push":"git push origin master && git push origin --tags","our:release:tag":"export MESSAGE=$(cat ./HISTORY.md | sed -n \"/## v$npm_package_version/,/##/p\" | sed 's/## //' | awk 'NR>1{print buf}{buf = $0}') && test \"$MESSAGE\" || (echo 'proper changelog entry not found' && exit -1) && git tag v$npm_package_version -am \"$MESSAGE\"","our:setup":"npm run our:setup:install","our:setup:install":"npm install","our:test":"npm run our:verify && npm test","our:verify":"npm run our:verify:directory && npm run our:verify:eslint && npm run our:verify:prettier","our:verify:directory":"valid-directory","our:verify:eslint":"eslint --fix --ignore-pattern '**/*.d.ts' --ignore-pattern '**/vendor/' --ignore-pattern '**/node_modules/' --ext .mjs,.js,.jsx,.ts,.tsx ./source","our:verify:prettier":"prettier --write .","test":"node ./edition-esnext/test.js"},"eslintConfig":{"extends":["bevry"]},"prettier":{"semi":false,"singleQuote":true},"gitHead":"708a16c4b435e8ca3804e25c8b6f9580facb3612","readme":"<!-- TITLE/ -->\n\n<h1>@bevry/pluginloader</h1>\n\n<!-- /TITLE -->\n\n\n<!-- BADGES/ -->\n\n<span class=\"badge-travisci\"><a href=\"http://travis-ci.com/bevry/pluginloader\" title=\"Check this project's build status on TravisCI\"><img src=\"https://img.shields.io/travis/com/bevry/pluginloader/master.svg\" alt=\"Travis CI Build Status\" /></a></span>\n<span class=\"badge-npmversion\"><a href=\"https://npmjs.org/package/@bevry/pluginloader\" title=\"View this project on NPM\"><img src=\"https://img.shields.io/npm/v/@bevry/pluginloader.svg\" alt=\"NPM version\" /></a></span>\n<span class=\"badge-npmdownloads\"><a href=\"https://npmjs.org/package/@bevry/pluginloader\" title=\"View this project on NPM\"><img src=\"https://img.shields.io/npm/dm/@bevry/pluginloader.svg\" alt=\"NPM downloads\" /></a></span>\n<span class=\"badge-daviddm\"><a href=\"https://david-dm.org/bevry/pluginloader\" title=\"View the status of this project's dependencies on DavidDM\"><img src=\"https://img.shields.io/david/bevry/pluginloader.svg\" alt=\"Dependency Status\" /></a></span>\n<span class=\"badge-daviddmdev\"><a href=\"https://david-dm.org/bevry/pluginloader#info=devDependencies\" title=\"View the status of this project's development dependencies on DavidDM\"><img src=\"https://img.shields.io/david/dev/bevry/pluginloader.svg\" alt=\"Dev Dependency Status\" /></a></span>\n<br class=\"badge-separator\" />\n<span class=\"badge-githubsponsors\"><a href=\"https://github.com/sponsors/balupton\" title=\"Donate to this project using GitHub Sponsors\"><img src=\"https://img.shields.io/badge/github-donate-yellow.svg\" alt=\"GitHub Sponsors donate button\" /></a></span>\n<span class=\"badge-patreon\"><a href=\"https://patreon.com/bevry\" title=\"Donate to this project using Patreon\"><img src=\"https://img.shields.io/badge/patreon-donate-yellow.svg\" alt=\"Patreon donate button\" /></a></span>\n<span class=\"badge-flattr\"><a href=\"https://flattr.com/profile/balupton\" title=\"Donate to this project using Flattr\"><img src=\"https://img.shields.io/badge/flattr-donate-yellow.svg\" alt=\"Flattr donate button\" /></a></span>\n<span class=\"badge-liberapay\"><a href=\"https://liberapay.com/bevry\" title=\"Donate to this project using Liberapay\"><img src=\"https://img.shields.io/badge/liberapay-donate-yellow.svg\" alt=\"Liberapay donate button\" /></a></span>\n<span class=\"badge-buymeacoffee\"><a href=\"https://buymeacoffee.com/balupton\" title=\"Donate to this project using Buy Me A Coffee\"><img src=\"https://img.shields.io/badge/buy%20me%20a%20coffee-donate-yellow.svg\" alt=\"Buy Me A Coffee donate button\" /></a></span>\n<span class=\"badge-opencollective\"><a href=\"https://opencollective.com/bevry\" title=\"Donate to this project using Open Collective\"><img src=\"https://img.shields.io/badge/open%20collective-donate-yellow.svg\" alt=\"Open Collective donate button\" /></a></span>\n<span class=\"badge-crypto\"><a href=\"https://bevry.me/crypto\" title=\"Donate to this project using Cryptocurrency\"><img src=\"https://img.shields.io/badge/crypto-donate-yellow.svg\" alt=\"crypto donate button\" /></a></span>\n<span class=\"badge-paypal\"><a href=\"https://bevry.me/paypal\" title=\"Donate to this project using Paypal\"><img src=\"https://img.shields.io/badge/paypal-donate-yellow.svg\" alt=\"PayPal donate button\" /></a></span>\n<span class=\"badge-wishlist\"><a href=\"https://bevry.me/wishlist\" title=\"Buy an item on our wishlist for us\"><img src=\"https://img.shields.io/badge/wishlist-donate-yellow.svg\" alt=\"Wishlist browse button\" /></a></span>\n\n<!-- /BADGES -->\n\n\n<!-- DESCRIPTION/ -->\n\nA class for loading, verifying, and creating plugins. Used by DocPad for years.\n\n<!-- /DESCRIPTION -->\n\n\n## Usage\n\n[Complete API Documentation.](http://master.pluginloader.bevry.surge.sh/docs/globals.html)\n\n### Basics\n\nCreate your project:\n\n1. `mkdir my-project`\n1. `cd my-project`\n\nCreate your plugin:\n\n1. `mkdir myplugin`\n1. `cd myplugin`\n1. `npm init`\n1. `index.js` to:\n\n    ```javascript\n    module.exports = function (BasePlugin) {\n        return class MyPlugin extends BasePlugin {\n            constructor(...args) {\n                super(...args)\n                console.log('hello from my plugin')\n            }\n        }\n    }\n    ```\n\n1. `cd ..`\n\nCreate your plugin loader:\n\n1. `mkdir myapp`\n1. `cd myapp`\n1. `npm init`\n1. `index.js` to:\n\n    ```javascript\n    import PluginLoader from '@bevry/pluginloader'\n\n    class BasePlugin {\n        constructor() {\n            console.log('hello from base plugin')\n        }\n    }\n\n    const pluginLoader = new PluginLoader({\n        BasePlugin,\n        pluginPath: require('path').resolve(__dirname, '..', 'myplugin'),\n    })\n    ```\n\n1. `cd ..`\n\nRun the project:\n\n1. `node myapp/index.js`\n\n### Ecosystem\n\n-   [pluginclerk](https://github.com/bevry/pluginclerk) a project for fetching compatible plugins from the npm registry\n-   [docpad-baseplugin](https://github.com/docpad/docpad-baseplugin) the BasePlugin class that DocPad uses\n-   [docpad-plugintester](https://github.com/docpad/docpad-plugintester) testing helpers for DocPad plugins\n\n<!-- INSTALL/ -->\n\n<h2>Install</h2>\n\n<a href=\"https://npmjs.com\" title=\"npm is a package manager for javascript\"><h3>npm</h3></a>\n<ul>\n<li>Install: <code>npm install --save @bevry/pluginloader</code></li>\n<li>Import: <code>import pkg from ('@bevry/pluginloader')</code></li>\n<li>Require: <code>const pkg = require('@bevry/pluginloader').default</code></li>\n</ul>\n\n<h3><a href=\"https://editions.bevry.me\" title=\"Editions are the best way to produce and consume packages you care about.\">Editions</a></h3>\n\n<p>This package is published with the following editions:</p>\n\n<ul><li><code>@bevry/pluginloader/source/index.ts</code> is <a href=\"https://www.typescriptlang.org/\" title=\"TypeScript is a typed superset of JavaScript that compiles to plain JavaScript. \">TypeScript</a> source code with <a href=\"https://babeljs.io/docs/learn-es2015/#modules\" title=\"ECMAScript Modules\">Import</a> for modules</li>\n<li><code>@bevry/pluginloader</code> aliases <code>@bevry/pluginloader/edition-esnext/index.js</code></li>\n<li><code>@bevry/pluginloader/edition-esnext/index.js</code> is <a href=\"https://www.typescriptlang.org/\" title=\"TypeScript is a typed superset of JavaScript that compiles to plain JavaScript. \">TypeScript</a> compiled against <a href=\"https://en.wikipedia.org/wiki/ECMAScript#ES.Next\" title=\"ECMAScript Next\">ESNext</a> for <a href=\"https://nodejs.org\" title=\"Node.js is a JavaScript runtime built on Chrome's V8 JavaScript engine\">Node.js</a> 10 || 12 || 13 || 14 with <a href=\"https://nodejs.org/dist/latest-v5.x/docs/api/modules.html\" title=\"Node/CJS Modules\">Require</a> for modules</li>\n<li><code>@bevry/pluginloader/edition-node-esm/index.js</code> is <a href=\"https://www.typescriptlang.org/\" title=\"TypeScript is a typed superset of JavaScript that compiles to plain JavaScript. \">TypeScript</a> compiled against <a href=\"https://en.wikipedia.org/wiki/ECMAScript#ES.Next\" title=\"ECMAScript Next\">ESNext</a> for <a href=\"https://nodejs.org\" title=\"Node.js is a JavaScript runtime built on Chrome's V8 JavaScript engine\">Node.js</a> with <a href=\"https://babeljs.io/docs/learn-es2015/#modules\" title=\"ECMAScript Modules\">Import</a> for modules</li></ul>\n\n<!-- /INSTALL -->\n\n\n<!-- HISTORY/ -->\n\n<h2>History</h2>\n\n<a href=\"https://github.com/bevry/pluginloader/blob/master/HISTORY.md#files\">Discover the release history by heading on over to the <code>HISTORY.md</code> file.</a>\n\n<!-- /HISTORY -->\n\n\n<!-- CONTRIBUTE/ -->\n\n<h2>Contribute</h2>\n\n<a href=\"https://github.com/bevry/pluginloader/blob/master/CONTRIBUTING.md#files\">Discover how you can contribute by heading on over to the <code>CONTRIBUTING.md</code> file.</a>\n\n<!-- /CONTRIBUTE -->\n\n\n<!-- BACKERS/ -->\n\n<h2>Backers</h2>\n\n<h3>Maintainers</h3>\n\nThese amazing people are maintaining this project:\n\n<ul><li><a href=\"https://balupton.com\">Benjamin Lupton</a> — <a href=\"https://github.com/bevry/pluginloader/commits?author=balupton\" title=\"View the GitHub contributions of Benjamin Lupton on repository bevry/pluginloader\">view contributions</a></li></ul>\n\n<h3>Sponsors</h3>\n\nNo sponsors yet! Will you be the first?\n\n<span class=\"badge-githubsponsors\"><a href=\"https://github.com/sponsors/balupton\" title=\"Donate to this project using GitHub Sponsors\"><img src=\"https://img.shields.io/badge/github-donate-yellow.svg\" alt=\"GitHub Sponsors donate button\" /></a></span>\n<span class=\"badge-patreon\"><a href=\"https://patreon.com/bevry\" title=\"Donate to this project using Patreon\"><img src=\"https://img.shields.io/badge/patreon-donate-yellow.svg\" alt=\"Patreon donate button\" /></a></span>\n<span class=\"badge-flattr\"><a href=\"https://flattr.com/profile/balupton\" title=\"Donate to this project using Flattr\"><img src=\"https://img.shields.io/badge/flattr-donate-yellow.svg\" alt=\"Flattr donate button\" /></a></span>\n<span class=\"badge-liberapay\"><a href=\"https://liberapay.com/bevry\" title=\"Donate to this project using Liberapay\"><img src=\"https://img.shields.io/badge/liberapay-donate-yellow.svg\" alt=\"Liberapay donate button\" /></a></span>\n<span class=\"badge-buymeacoffee\"><a href=\"https://buymeacoffee.com/balupton\" title=\"Donate to this project using Buy Me A Coffee\"><img src=\"https://img.shields.io/badge/buy%20me%20a%20coffee-donate-yellow.svg\" alt=\"Buy Me A Coffee donate button\" /></a></span>\n<span class=\"badge-opencollective\"><a href=\"https://opencollective.com/bevry\" title=\"Donate to this project using Open Collective\"><img src=\"https://img.shields.io/badge/open%20collective-donate-yellow.svg\" alt=\"Open Collective donate button\" /></a></span>\n<span class=\"badge-crypto\"><a href=\"https://bevry.me/crypto\" title=\"Donate to this project using Cryptocurrency\"><img src=\"https://img.shields.io/badge/crypto-donate-yellow.svg\" alt=\"crypto donate button\" /></a></span>\n<span class=\"badge-paypal\"><a href=\"https://bevry.me/paypal\" title=\"Donate to this project using Paypal\"><img src=\"https://img.shields.io/badge/paypal-donate-yellow.svg\" alt=\"PayPal donate button\" /></a></span>\n<span class=\"badge-wishlist\"><a href=\"https://bevry.me/wishlist\" title=\"Buy an item on our wishlist for us\"><img src=\"https://img.shields.io/badge/wishlist-donate-yellow.svg\" alt=\"Wishlist browse button\" /></a></span>\n\n<h3>Contributors</h3>\n\nThese amazing people have contributed code to this project:\n\n<ul><li><a href=\"https://balupton.com\">Benjamin Lupton</a> — <a href=\"https://github.com/bevry/pluginloader/commits?author=balupton\" title=\"View the GitHub contributions of Benjamin Lupton on repository bevry/pluginloader\">view contributions</a></li></ul>\n\n<a href=\"https://github.com/bevry/pluginloader/blob/master/CONTRIBUTING.md#files\">Discover how you can contribute by heading on over to the <code>CONTRIBUTING.md</code> file.</a>\n\n<!-- /BACKERS -->\n\n\n<!-- LICENSE/ -->\n\n<h2>License</h2>\n\nUnless stated otherwise all works are:\n\n<ul><li>Copyright &copy; 2018+ <a href=\"https://balupton.com\">Benjamin Lupton</a></li></ul>\n\nand licensed under:\n\n<ul><li><a href=\"http://spdx.org/licenses/MIT.html\">MIT License</a></li></ul>\n\n<!-- /LICENSE -->\n","readmeFilename":"README.md","_id":"@bevry/pluginloader@4.11.0-next.1603628094.708a16c4b435e8ca3804e25c8b6f9580facb3612","_nodeVersion":"14.14.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-EGh0g4ybOHG4ZCOp7+oD4JJHve2xQjHgxLaImVXT/FXa7w1m7wKC+RXTtBgpEshd1fnSyBy4ZwIXAcucelXDIA==","shasum":"96fdadc892f8597280dae5899fdec9b445d75f38","tarball":"https://registry.npmjs.org/@bevry/pluginloader/-/pluginloader-4.11.0-next.1603628094.708a16c4b435e8ca3804e25c8b6f9580facb3612.tgz","fileCount":13,"unpackedSize":53683,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJflWxACRA9TVsSAnZWagAAEvQP+gLjniSWur1nNdZTwxRI\nLR9dus/+VTkuj7uT1wzKNe1a4y9v5xxVbAhet2hWALlLhObiK8xtA24flgTa\nYVYN4VCWWx66Av666NCFt0l/6TxKlcX/I+X/Th3I79vAZzi0EktCbjwUraGS\nt1o7Ajr2btBYQdO8Y2VRyvLqc7uM/nafm28FvlANOe8HoZupsvDRvK9nKvUs\nj0QWn+4GbETPwnEvdN5v6dV1I+8dy3TB7IadtB/Oj4nPQvaEKqoijqFpX/Al\n9quMv4iCqk3ujWqypdBWkKYS9YKHV+3YwD38Pti7dx8NCpObUzn59tvdFvCL\nAz0sTmr018efAn+NUcTR8ZR+HgJcg8HnqseIX6QzNEyF1cZ9RgXUsEwh7OeH\nRePIuhGAHgxVNj19oa3hIwih3+sGBKzhqjJMJLbOcB+RGI0dqdHJiuLLZGZ8\nHJjJ6ViFcq9EmYKCwM1RQ0YAttYeHJ9Il05xkQ6a/Z+JVzLZ13DTJR6LsijD\nhTfeRhV5GFTHTEhCufUD+Ohv458NW5oRSYtqvYNxEMHKfyKkY8QSParjFQC+\n6jdVVfWB5IH4LhrDfxDysdhDvZlIINFPLDPXep0UcuSCYlG5ppyh0+Bziu8i\n1bcweO9G7S91okbEu3eodimnH2hHs38h5mKOryf4OUi6n4FhYjtPCbnY/ilS\nax/Y\r\n=Y8Mv\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDmil43yI5LZaq4+ElKm/tnVabE62Mjs7fFBN3nYZb5XwIgL6Ucxem+p8LKXPuXetZ/GZcica9Mqk3jUKQNRqlfPuw="}]},"_npmUser":{"name":"bevryme","email":"us@bevry.me"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/pluginloader_4.11.0-next.1603628094.708a16c4b435e8ca3804e25c8b6f9580facb3612_1603628096317_0.9007125671258362"},"_hasShrinkwrap":false},"4.11.0-next.1604238395.f8b5491fb381675d8ba665d4d3d7daadaee96786":{"name":"@bevry/pluginloader","version":"4.11.0-next.1604238395.f8b5491fb381675d8ba665d4d3d7daadaee96786","description":"A class for loading, verifying, and creating plugins. Used by DocPad for years.","homepage":"https://github.com/bevry/pluginloader","license":"MIT","keywords":["bevry","docpad","export-default","loader","node","plugin","plugins","typed","types","typescript"],"badges":{"list":["travisci","npmversion","npmdownloads","daviddm","daviddmdev","---","githubsponsors","patreon","flattr","liberapay","buymeacoffee","opencollective","crypto","paypal","wishlist"],"config":{"githubSponsorsUsername":"balupton","buymeacoffeeUsername":"balupton","cryptoURL":"https://bevry.me/crypto","flattrUsername":"balupton","liberapayUsername":"bevry","opencollectiveUsername":"bevry","patreonUsername":"bevry","paypalURL":"https://bevry.me/paypal","wishlistURL":"https://bevry.me/wishlist","travisTLD":"com","githubUsername":"bevry","githubRepository":"pluginloader","githubSlug":"bevry/pluginloader","npmPackageName":"@bevry/pluginloader"}},"funding":"https://bevry.me/fund","author":{"name":"2018+ Benjamin Lupton","email":"b@lupton.cc","url":"https://balupton.com"},"maintainers":[{"name":"sumitrai","email":"sumitrai96@gmail.com"},{"name":"bevryme","email":"us@bevry.me"},{"name":"balupton","email":"b@lupton.cc"}],"contributors":[{"name":"Benjamin Lupton","email":"b@lupton.cc","url":"https://github.com/balupton"}],"bugs":{"url":"https://github.com/bevry/pluginloader/issues"},"repository":{"type":"git","url":"git+https://github.com/bevry/pluginloader.git"},"engines":{"node":">=10"},"editions":[{"description":"TypeScript source code with Import for modules","directory":"source","entry":"index.ts","tags":["typescript","import"],"engines":false},{"description":"TypeScript compiled against ESNext for Node.js 10 || 12 || 13 || 14 with Require for modules","directory":"edition-esnext","entry":"index.js","tags":["javascript","esnext","require"],"engines":{"node":"10 || 12 || 13 || 14"}},{"description":"TypeScript compiled against ESNext for Node.js with Import for modules","directory":"edition-node-esm","entry":"index.js","tags":["javascript","import"],"engines":{"node":true,"browsers":false}}],"types":"./compiled-types/","type":"module","main":"edition-esnext/index.js","exports":{"node":{"import":"./edition-node-esm/index.js","require":"./edition-esnext/index.js"}},"dependencies":{"errlop":"^3.16.0","semver":"^7.3.2","typechecker":"^7.13.0"},"devDependencies":{"@bevry/update-contributors":"^1.15.0","@typescript-eslint/eslint-plugin":"^4.0.0","@typescript-eslint/parser":"^3.9.1","assert-helpers":"^7.0.1","eslint":"^7.7.0","eslint-config-bevry":"^3.19.0","eslint-config-prettier":"^6.11.0","eslint-plugin-prettier":"^3.1.4","kava":"^5.11.0","make-deno-edition":"^1.0.0","prettier":"^2.0.5","projectz":"^2.14.0","surge":"^0.21.6","typedoc":"^0.19.1","typescript":"^4.0.2","valid-directory":"^3.0.0"},"scripts":{"our:clean":"rm -Rf ./docs ./edition* ./es2015 ./es5 ./out ./.next","our:compile":"npm run our:compile:deno && npm run our:compile:edition-esnext && npm run our:compile:edition-node-esm && npm run our:compile:types","our:compile:deno":"make-deno-edition --attempt","our:compile:edition-esnext":"tsc --module commonjs --target ESNext --outDir ./edition-esnext --project tsconfig.json && ( test ! -d edition-esnext/source || ( mv edition-esnext/source edition-temp && rm -Rf edition-esnext && mv edition-temp edition-esnext ) ) && echo '{\"type\": \"commonjs\"}' > edition-esnext/package.json","our:compile:edition-node-esm":"tsc --module ESNext --target ESNext --outDir ./edition-node-esm --project tsconfig.json && ( test ! -d edition-node-esm/source || ( mv edition-node-esm/source edition-temp && rm -Rf edition-node-esm && mv edition-temp edition-node-esm ) ) && echo '{\"type\": \"module\"}' > edition-node-esm/package.json","our:compile:types":"tsc --project tsconfig.json --emitDeclarationOnly --declaration --declarationMap --declarationDir ./compiled-types && ( test ! -d compiled-types/source || ( mv compiled-types/source edition-temp && rm -Rf compiled-types && mv edition-temp compiled-types ) )","our:deploy":"echo no need for this project","our:meta":"npm run our:meta:contributors && npm run our:meta:docs && npm run our:meta:projectz","our:meta:contributors":"update-contributors","our:meta:docs":"npm run our:meta:docs:typedoc","our:meta:docs:typedoc":"rm -Rf ./docs && typedoc --mode file --exclude '**/+(*test*|node_modules)' --excludeExternals --name \"$npm_package_name\" --readme ./README.md --out ./docs ./source","our:meta:projectz":"projectz compile","our:release":"npm run our:release:prepare && npm run our:release:check-changelog && npm run our:release:check-dirty && npm run our:release:tag && npm run our:release:push","our:release:check-changelog":"cat ./HISTORY.md | grep v$npm_package_version || (echo add a changelog entry for v$npm_package_version && exit -1)","our:release:check-dirty":"git diff --exit-code","our:release:prepare":"npm run our:clean && npm run our:compile && npm run our:test && npm run our:meta","our:release:push":"git push origin master && git push origin --tags","our:release:tag":"export MESSAGE=$(cat ./HISTORY.md | sed -n \"/## v$npm_package_version/,/##/p\" | sed 's/## //' | awk 'NR>1{print buf}{buf = $0}') && test \"$MESSAGE\" || (echo 'proper changelog entry not found' && exit -1) && git tag v$npm_package_version -am \"$MESSAGE\"","our:setup":"npm run our:setup:install","our:setup:install":"npm install","our:test":"npm run our:verify && npm test","our:verify":"npm run our:verify:directory && npm run our:verify:eslint && npm run our:verify:prettier","our:verify:directory":"valid-directory","our:verify:eslint":"eslint --fix --ignore-pattern '**/*.d.ts' --ignore-pattern '**/vendor/' --ignore-pattern '**/node_modules/' --ext .mjs,.js,.jsx,.ts,.tsx ./source","our:verify:prettier":"prettier --write .","test":"node ./edition-esnext/test.js"},"eslintConfig":{"extends":["bevry"]},"prettier":{"semi":false,"singleQuote":true},"gitHead":"f8b5491fb381675d8ba665d4d3d7daadaee96786","readme":"<!-- TITLE/ -->\n\n<h1>@bevry/pluginloader</h1>\n\n<!-- /TITLE -->\n\n\n<!-- BADGES/ -->\n\n<span class=\"badge-travisci\"><a href=\"http://travis-ci.com/bevry/pluginloader\" title=\"Check this project's build status on TravisCI\"><img src=\"https://img.shields.io/travis/com/bevry/pluginloader/master.svg\" alt=\"Travis CI Build Status\" /></a></span>\n<span class=\"badge-npmversion\"><a href=\"https://npmjs.org/package/@bevry/pluginloader\" title=\"View this project on NPM\"><img src=\"https://img.shields.io/npm/v/@bevry/pluginloader.svg\" alt=\"NPM version\" /></a></span>\n<span class=\"badge-npmdownloads\"><a href=\"https://npmjs.org/package/@bevry/pluginloader\" title=\"View this project on NPM\"><img src=\"https://img.shields.io/npm/dm/@bevry/pluginloader.svg\" alt=\"NPM downloads\" /></a></span>\n<span class=\"badge-daviddm\"><a href=\"https://david-dm.org/bevry/pluginloader\" title=\"View the status of this project's dependencies on DavidDM\"><img src=\"https://img.shields.io/david/bevry/pluginloader.svg\" alt=\"Dependency Status\" /></a></span>\n<span class=\"badge-daviddmdev\"><a href=\"https://david-dm.org/bevry/pluginloader#info=devDependencies\" title=\"View the status of this project's development dependencies on DavidDM\"><img src=\"https://img.shields.io/david/dev/bevry/pluginloader.svg\" alt=\"Dev Dependency Status\" /></a></span>\n<br class=\"badge-separator\" />\n<span class=\"badge-githubsponsors\"><a href=\"https://github.com/sponsors/balupton\" title=\"Donate to this project using GitHub Sponsors\"><img src=\"https://img.shields.io/badge/github-donate-yellow.svg\" alt=\"GitHub Sponsors donate button\" /></a></span>\n<span class=\"badge-patreon\"><a href=\"https://patreon.com/bevry\" title=\"Donate to this project using Patreon\"><img src=\"https://img.shields.io/badge/patreon-donate-yellow.svg\" alt=\"Patreon donate button\" /></a></span>\n<span class=\"badge-flattr\"><a href=\"https://flattr.com/profile/balupton\" title=\"Donate to this project using Flattr\"><img src=\"https://img.shields.io/badge/flattr-donate-yellow.svg\" alt=\"Flattr donate button\" /></a></span>\n<span class=\"badge-liberapay\"><a href=\"https://liberapay.com/bevry\" title=\"Donate to this project using Liberapay\"><img src=\"https://img.shields.io/badge/liberapay-donate-yellow.svg\" alt=\"Liberapay donate button\" /></a></span>\n<span class=\"badge-buymeacoffee\"><a href=\"https://buymeacoffee.com/balupton\" title=\"Donate to this project using Buy Me A Coffee\"><img src=\"https://img.shields.io/badge/buy%20me%20a%20coffee-donate-yellow.svg\" alt=\"Buy Me A Coffee donate button\" /></a></span>\n<span class=\"badge-opencollective\"><a href=\"https://opencollective.com/bevry\" title=\"Donate to this project using Open Collective\"><img src=\"https://img.shields.io/badge/open%20collective-donate-yellow.svg\" alt=\"Open Collective donate button\" /></a></span>\n<span class=\"badge-crypto\"><a href=\"https://bevry.me/crypto\" title=\"Donate to this project using Cryptocurrency\"><img src=\"https://img.shields.io/badge/crypto-donate-yellow.svg\" alt=\"crypto donate button\" /></a></span>\n<span class=\"badge-paypal\"><a href=\"https://bevry.me/paypal\" title=\"Donate to this project using Paypal\"><img src=\"https://img.shields.io/badge/paypal-donate-yellow.svg\" alt=\"PayPal donate button\" /></a></span>\n<span class=\"badge-wishlist\"><a href=\"https://bevry.me/wishlist\" title=\"Buy an item on our wishlist for us\"><img src=\"https://img.shields.io/badge/wishlist-donate-yellow.svg\" alt=\"Wishlist browse button\" /></a></span>\n\n<!-- /BADGES -->\n\n\n<!-- DESCRIPTION/ -->\n\nA class for loading, verifying, and creating plugins. Used by DocPad for years.\n\n<!-- /DESCRIPTION -->\n\n\n## Usage\n\n[Complete API Documentation.](http://master.pluginloader.bevry.surge.sh/docs/globals.html)\n\n### Basics\n\nCreate your project:\n\n1. `mkdir my-project`\n1. `cd my-project`\n\nCreate your plugin:\n\n1. `mkdir myplugin`\n1. `cd myplugin`\n1. `npm init`\n1. `index.js` to:\n\n    ```javascript\n    module.exports = function (BasePlugin) {\n        return class MyPlugin extends BasePlugin {\n            constructor(...args) {\n                super(...args)\n                console.log('hello from my plugin')\n            }\n        }\n    }\n    ```\n\n1. `cd ..`\n\nCreate your plugin loader:\n\n1. `mkdir myapp`\n1. `cd myapp`\n1. `npm init`\n1. `index.js` to:\n\n    ```javascript\n    import PluginLoader from '@bevry/pluginloader'\n\n    class BasePlugin {\n        constructor() {\n            console.log('hello from base plugin')\n        }\n    }\n\n    const pluginLoader = new PluginLoader({\n        BasePlugin,\n        pluginPath: require('path').resolve(__dirname, '..', 'myplugin'),\n    })\n    ```\n\n1. `cd ..`\n\nRun the project:\n\n1. `node myapp/index.js`\n\n### Ecosystem\n\n-   [pluginclerk](https://github.com/bevry/pluginclerk) a project for fetching compatible plugins from the npm registry\n-   [docpad-baseplugin](https://github.com/docpad/docpad-baseplugin) the BasePlugin class that DocPad uses\n-   [docpad-plugintester](https://github.com/docpad/docpad-plugintester) testing helpers for DocPad plugins\n\n<!-- INSTALL/ -->\n\n<h2>Install</h2>\n\n<a href=\"https://npmjs.com\" title=\"npm is a package manager for javascript\"><h3>npm</h3></a>\n<ul>\n<li>Install: <code>npm install --save @bevry/pluginloader</code></li>\n<li>Import: <code>import pkg from ('@bevry/pluginloader')</code></li>\n<li>Require: <code>const pkg = require('@bevry/pluginloader').default</code></li>\n</ul>\n\n<h3><a href=\"https://editions.bevry.me\" title=\"Editions are the best way to produce and consume packages you care about.\">Editions</a></h3>\n\n<p>This package is published with the following editions:</p>\n\n<ul><li><code>@bevry/pluginloader/source/index.ts</code> is <a href=\"https://www.typescriptlang.org/\" title=\"TypeScript is a typed superset of JavaScript that compiles to plain JavaScript. \">TypeScript</a> source code with <a href=\"https://babeljs.io/docs/learn-es2015/#modules\" title=\"ECMAScript Modules\">Import</a> for modules</li>\n<li><code>@bevry/pluginloader</code> aliases <code>@bevry/pluginloader/edition-esnext/index.js</code></li>\n<li><code>@bevry/pluginloader/edition-esnext/index.js</code> is <a href=\"https://www.typescriptlang.org/\" title=\"TypeScript is a typed superset of JavaScript that compiles to plain JavaScript. \">TypeScript</a> compiled against <a href=\"https://en.wikipedia.org/wiki/ECMAScript#ES.Next\" title=\"ECMAScript Next\">ESNext</a> for <a href=\"https://nodejs.org\" title=\"Node.js is a JavaScript runtime built on Chrome's V8 JavaScript engine\">Node.js</a> 10 || 12 || 13 || 14 with <a href=\"https://nodejs.org/dist/latest-v5.x/docs/api/modules.html\" title=\"Node/CJS Modules\">Require</a> for modules</li>\n<li><code>@bevry/pluginloader/edition-node-esm/index.js</code> is <a href=\"https://www.typescriptlang.org/\" title=\"TypeScript is a typed superset of JavaScript that compiles to plain JavaScript. \">TypeScript</a> compiled against <a href=\"https://en.wikipedia.org/wiki/ECMAScript#ES.Next\" title=\"ECMAScript Next\">ESNext</a> for <a href=\"https://nodejs.org\" title=\"Node.js is a JavaScript runtime built on Chrome's V8 JavaScript engine\">Node.js</a> with <a href=\"https://babeljs.io/docs/learn-es2015/#modules\" title=\"ECMAScript Modules\">Import</a> for modules</li></ul>\n\n<!-- /INSTALL -->\n\n\n<!-- HISTORY/ -->\n\n<h2>History</h2>\n\n<a href=\"https://github.com/bevry/pluginloader/blob/master/HISTORY.md#files\">Discover the release history by heading on over to the <code>HISTORY.md</code> file.</a>\n\n<!-- /HISTORY -->\n\n\n<!-- CONTRIBUTE/ -->\n\n<h2>Contribute</h2>\n\n<a href=\"https://github.com/bevry/pluginloader/blob/master/CONTRIBUTING.md#files\">Discover how you can contribute by heading on over to the <code>CONTRIBUTING.md</code> file.</a>\n\n<!-- /CONTRIBUTE -->\n\n\n<!-- BACKERS/ -->\n\n<h2>Backers</h2>\n\n<h3>Maintainers</h3>\n\nThese amazing people are maintaining this project:\n\n<ul><li><a href=\"https://balupton.com\">Benjamin Lupton</a> — <a href=\"https://github.com/bevry/pluginloader/commits?author=balupton\" title=\"View the GitHub contributions of Benjamin Lupton on repository bevry/pluginloader\">view contributions</a></li></ul>\n\n<h3>Sponsors</h3>\n\nNo sponsors yet! Will you be the first?\n\n<span class=\"badge-githubsponsors\"><a href=\"https://github.com/sponsors/balupton\" title=\"Donate to this project using GitHub Sponsors\"><img src=\"https://img.shields.io/badge/github-donate-yellow.svg\" alt=\"GitHub Sponsors donate button\" /></a></span>\n<span class=\"badge-patreon\"><a href=\"https://patreon.com/bevry\" title=\"Donate to this project using Patreon\"><img src=\"https://img.shields.io/badge/patreon-donate-yellow.svg\" alt=\"Patreon donate button\" /></a></span>\n<span class=\"badge-flattr\"><a href=\"https://flattr.com/profile/balupton\" title=\"Donate to this project using Flattr\"><img src=\"https://img.shields.io/badge/flattr-donate-yellow.svg\" alt=\"Flattr donate button\" /></a></span>\n<span class=\"badge-liberapay\"><a href=\"https://liberapay.com/bevry\" title=\"Donate to this project using Liberapay\"><img src=\"https://img.shields.io/badge/liberapay-donate-yellow.svg\" alt=\"Liberapay donate button\" /></a></span>\n<span class=\"badge-buymeacoffee\"><a href=\"https://buymeacoffee.com/balupton\" title=\"Donate to this project using Buy Me A Coffee\"><img src=\"https://img.shields.io/badge/buy%20me%20a%20coffee-donate-yellow.svg\" alt=\"Buy Me A Coffee donate button\" /></a></span>\n<span class=\"badge-opencollective\"><a href=\"https://opencollective.com/bevry\" title=\"Donate to this project using Open Collective\"><img src=\"https://img.shields.io/badge/open%20collective-donate-yellow.svg\" alt=\"Open Collective donate button\" /></a></span>\n<span class=\"badge-crypto\"><a href=\"https://bevry.me/crypto\" title=\"Donate to this project using Cryptocurrency\"><img src=\"https://img.shields.io/badge/crypto-donate-yellow.svg\" alt=\"crypto donate button\" /></a></span>\n<span class=\"badge-paypal\"><a href=\"https://bevry.me/paypal\" title=\"Donate to this project using Paypal\"><img src=\"https://img.shields.io/badge/paypal-donate-yellow.svg\" alt=\"PayPal donate button\" /></a></span>\n<span class=\"badge-wishlist\"><a href=\"https://bevry.me/wishlist\" title=\"Buy an item on our wishlist for us\"><img src=\"https://img.shields.io/badge/wishlist-donate-yellow.svg\" alt=\"Wishlist browse button\" /></a></span>\n\n<h3>Contributors</h3>\n\nThese amazing people have contributed code to this project:\n\n<ul><li><a href=\"https://balupton.com\">Benjamin Lupton</a> — <a href=\"https://github.com/bevry/pluginloader/commits?author=balupton\" title=\"View the GitHub contributions of Benjamin Lupton on repository bevry/pluginloader\">view contributions</a></li></ul>\n\n<a href=\"https://github.com/bevry/pluginloader/blob/master/CONTRIBUTING.md#files\">Discover how you can contribute by heading on over to the <code>CONTRIBUTING.md</code> file.</a>\n\n<!-- /BACKERS -->\n\n\n<!-- LICENSE/ -->\n\n<h2>License</h2>\n\nUnless stated otherwise all works are:\n\n<ul><li>Copyright &copy; 2018+ <a href=\"https://balupton.com\">Benjamin Lupton</a></li></ul>\n\nand licensed under:\n\n<ul><li><a href=\"http://spdx.org/licenses/MIT.html\">MIT License</a></li></ul>\n\n<!-- /LICENSE -->\n","readmeFilename":"README.md","_id":"@bevry/pluginloader@4.11.0-next.1604238395.f8b5491fb381675d8ba665d4d3d7daadaee96786","_nodeVersion":"14.15.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-wpzhbX4t1dIEkTYPgWi40WhWzxbQdQzwQlyaIpC3KeQPGse4hpURWIrg+QQv2Yyqx/2GSFRFXIKdc5rxYN/xvw==","shasum":"503cc8f3b58ee0e3c468d197a5ca93633695ebea","tarball":"https://registry.npmjs.org/@bevry/pluginloader/-/pluginloader-4.11.0-next.1604238395.f8b5491fb381675d8ba665d4d3d7daadaee96786.tgz","fileCount":13,"unpackedSize":53683,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfnrw9CRA9TVsSAnZWagAAf8QP/iv1/t3LM0wQyt0/b0C2\nV0EoxZSmJzS9iMXB0E7sIJoEKGAbgoMg40VgyofgCtiZI8nFlVCB3CB7zLKc\nHrakkEEcvUWSWbAimeNCM4XUPuDmjNB7lhRyU6C5wiHipn3OiY9xbuytf+Av\ntp8QNzTWTWEScLRT+WaqWSADRPKVw3ksTniUGlcIol0wc34llf32URoxc8j2\n9yJjbtp4rNqR74LlcUKjr5Sy5I7llv1/VbJXU1CI3u+uuGc9zigIKRTu70km\nEiHPjdDfwEKrXan6f8iksqGrGX2h0ionLiJ+qssP+4IL1SqpdP7ue4MRXKwJ\nJb4i7AJQ+Ae6XuUIxruQ3ZkGEsQRFbgDcycnrTY3GELsMafPvfnpkdtiwNmq\n3C5Fv776ZIHDVwyEMPIqY8vST41zscyoV/dTeOANxvmW5LQ313+zwTIVstCz\n9lb045qEkSphqTgotk1RTCpGha4APXIycd5zfCbsrg0p1xA98Q0+RgMUOeOQ\nezqKGJ0z4L3sFtQMjwm16LTlmdcfg3hDrvETzT4BBGqxy6xfOP3/eqADdV3y\nbi8kDOju8rMYzUN7D3ziuzb8uv+CAjy2NkMVQ862MUBCd9cHNIg3OvIVOjsM\noIPe6OVz8DdhLVVsXg8RF/XmTInd4bnn+LVt/cuRNm9Bk4BrQaYG0QDRMCN+\nb1bU\r\n=lMXU\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGCpryyK7bZ5ptKA+/k/6iEZGYpxK7BUw+vpWa6xPmFnAiEA0FcoSntPGhxSaF9C7yaQlRU4Y4/4WtSmQ+uE8VdOmAA="}]},"_npmUser":{"name":"bevryme","email":"us@bevry.me"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/pluginloader_4.11.0-next.1604238395.f8b5491fb381675d8ba665d4d3d7daadaee96786_1604238397102_0.5400015359900825"},"_hasShrinkwrap":false},"4.12.0":{"name":"@bevry/pluginloader","version":"4.12.0","description":"A class for loading, verifying, and creating plugins. Used by DocPad for years.","homepage":"https://github.com/bevry/pluginloader","license":"Artistic-2.0","keywords":["bevry","docpad","es2021","es2022","loader","node","plugin","plugins","typed","types","typescript"],"badges":{"list":["githubworkflow","npmversion","npmdownloads","---","githubsponsors","thanksdev","patreon","liberapay","buymeacoffee","opencollective","crypto","paypal","---","discord","twitch"],"config":{"githubWorkflow":"bevry","githubSponsorsUsername":"balupton","thanksdevGithubUsername":"bevry","buymeacoffeeUsername":"balupton","cryptoURL":"https://bevry.me/crypto","flattrUsername":"balupton","liberapayUsername":"bevry","opencollectiveUsername":"bevry","patreonUsername":"bevry","paypalURL":"https://bevry.me/paypal","wishlistURL":"https://bevry.me/wishlist","discordServerID":"1147436445783560193","discordServerInvite":"nQuXddV7VP","twitchUsername":"balupton","githubUsername":"bevry","githubRepository":"pluginloader","githubSlug":"bevry/pluginloader","npmPackageName":"@bevry/pluginloader"}},"funding":"https://bevry.me/fund","author":{"name":"2018+ Benjamin Lupton","email":"b@lupton.cc","url":"https://balupton.com"},"maintainers":[{"name":"bevryme","email":"us@bevry.me"}],"contributors":[{"name":"Benjamin Lupton","email":"b@lupton.cc","url":"https://github.com/balupton"}],"bugs":{"url":"https://github.com/bevry/pluginloader/issues"},"repository":{"type":"git","url":"git+https://github.com/bevry/pluginloader.git"},"engines":{"node":">=10"},"editions":[{"description":"TypeScript source code with Import for modules","directory":"source","entry":"index.ts","tags":["source","typescript","import"],"engines":false},{"description":"TypeScript compiled against ES2022 for Node.js 12 || 14 || 16 || 18 || 20 || 21 with Require for modules","directory":"edition-es2022","entry":"index.js","tags":["compiled","javascript","es2022","require"],"engines":{"node":"12 || 14 || 16 || 18 || 20 || 21","browsers":false}},{"description":"TypeScript compiled against ES2021 for Node.js 10 || 12 || 14 || 16 || 18 || 20 || 21 with Require for modules","directory":"edition-es2021","entry":"index.js","tags":["compiled","javascript","es2021","require"],"engines":{"node":"10 || 12 || 14 || 16 || 18 || 20 || 21","browsers":false}}],"types":"./compiled-types/","type":"module","main":"index.cjs","dependencies":{"editions":"^6.13.0","errlop":"^7.2.0","typechecker":"^8.2.0","version-range":"^4.2.0"},"devDependencies":{"@bevry/update-contributors":"^1.23.0","@types/node":"^20.9.2","@typescript-eslint/eslint-plugin":"^6.11.0","@typescript-eslint/parser":"^6.11.0","assert-helpers":"^11.4.0","eslint":"^8.54.0","eslint-config-bevry":"^5.0.0","eslint-config-prettier":"^9.0.0","eslint-plugin-prettier":"^5.0.1","filedirname":"^2.10.0","kava":"^7.2.0","prettier":"^3.1.0","projectz":"^3.2.0","surge":"^0.23.1","typedoc":"^0.25.3","typescript":"5.2.2","valid-directory":"^4.4.0"},"scripts":{"our:clean":"rm -rf ./docs ./edition* ./es2015 ./es5 ./out ./.next","our:compile":"npm run our:compile:edition-es2021 && npm run our:compile:edition-es2022 && npm run our:compile:types","our:compile:edition-es2021":"tsc --module commonjs --target ES2021 --outDir ./edition-es2021 --project tsconfig.json && ( test ! -d edition-es2021/source || ( mv edition-es2021/source edition-temp && rm -rf edition-es2021 && mv edition-temp edition-es2021 ) ) && printf '%s' '{\"type\": \"commonjs\"}' > edition-es2021/package.json","our:compile:edition-es2022":"tsc --module commonjs --target ES2022 --outDir ./edition-es2022 --project tsconfig.json && ( test ! -d edition-es2022/source || ( mv edition-es2022/source edition-temp && rm -rf edition-es2022 && mv edition-temp edition-es2022 ) ) && printf '%s' '{\"type\": \"commonjs\"}' > edition-es2022/package.json","our:compile:types":"tsc --project tsconfig.json --emitDeclarationOnly --declaration --declarationMap --declarationDir ./compiled-types && ( test ! -d compiled-types/source || ( mv compiled-types/source edition-temp && rm -rf compiled-types && mv edition-temp compiled-types ) )","our:deploy":"printf '%s\n' 'no need for this project'","our:meta":"npm run our:meta:contributors && npm run our:meta:docs && npm run our:meta:projectz","our:meta:contributors":"update-contributors","our:meta:docs":"npm run our:meta:docs:typedoc","our:meta:docs:typedoc":"rm -rf ./docs && typedoc --exclude '**/+(*test*|node_modules)' --excludeExternals --out ./docs ./source","our:meta:projectz":"projectz compile","our:release":"npm run our:release:prepare && npm run our:release:check-changelog && npm run our:release:check-dirty && npm run our:release:tag && npm run our:release:push","our:release:check-changelog":"cat ./HISTORY.md | grep \"v$npm_package_version\" || (printf '%s\n' \"add a changelog entry for v$npm_package_version\" && exit -1)","our:release:check-dirty":"git diff --exit-code","our:release:prepare":"npm run our:clean && npm run our:compile && npm run our:test && npm run our:meta","our:release:push":"git push origin && git push origin --tags","our:release:tag":"export MESSAGE=$(cat ./HISTORY.md | sed -n \"/## v$npm_package_version/,/##/p\" | sed 's/## //' | awk 'NR>1{print buf}{buf = $0}') && test \"$MESSAGE\" || (printf '%s\n' 'proper changelog entry not found' && exit -1) && git tag \"v$npm_package_version\" -am \"$MESSAGE\"","our:setup":"npm run our:setup:install","our:setup:install":"npm install","our:test":"npm run our:verify && npm test","our:verify":"npm run our:verify:directory && npm run our:verify:eslint && npm run our:verify:prettier","our:verify:directory":"valid-directory","our:verify:eslint":"eslint --fix --ignore-pattern '**/*.d.ts' --ignore-pattern '**/vendor/' --ignore-pattern '**/node_modules/' --ext .mjs,.js,.jsx,.ts,.tsx ./source","our:verify:prettier":"prettier --write .","test":"node ./test.cjs"},"eslintConfig":{"extends":["bevry"]},"prettier":{"semi":false,"singleQuote":true,"trailingComma":"es5"},"boundation":{"sourceModule":false},"_id":"@bevry/pluginloader@4.12.0","gitHead":"c8bb9bddb4579326954e85f3eda36536665b1c67","_nodeVersion":"20.9.0","_npmVersion":"10.1.0","dist":{"integrity":"sha512-wlX9t9sV+eu05mvJYtrTfzRXnXJftQqwm/Cge/lch12LYJF4icazMS8xnIkjhuLRUlNVAo+YHoHRjS3j8Zpajw==","shasum":"037b2b4ca2bb0a8557d80259e550da2d6b1a49f7","tarball":"https://registry.npmjs.org/@bevry/pluginloader/-/pluginloader-4.12.0.tgz","fileCount":14,"unpackedSize":64076,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIC6EzVdJ4tP7fAbFjB4YjIdEO8eC0PMFcLGRmvoDLT0zAiEAq2gfJyY87dCT1VuJ9sU9ixVY88aWYwkzobaRm4D3SP0="}]},"_npmUser":{"name":"bevryme","email":"us@bevry.me"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/pluginloader_4.12.0_1700436014297_0.9336931129802233"},"_hasShrinkwrap":false},"4.12.0-next.1700436019.c8bb9bddb4579326954e85f3eda36536665b1c67":{"name":"@bevry/pluginloader","version":"4.12.0-next.1700436019.c8bb9bddb4579326954e85f3eda36536665b1c67","description":"A class for loading, verifying, and creating plugins. Used by DocPad for years.","homepage":"https://github.com/bevry/pluginloader","license":"Artistic-2.0","keywords":["bevry","docpad","es2021","es2022","loader","node","plugin","plugins","typed","types","typescript"],"badges":{"list":["githubworkflow","npmversion","npmdownloads","---","githubsponsors","thanksdev","patreon","liberapay","buymeacoffee","opencollective","crypto","paypal","---","discord","twitch"],"config":{"githubWorkflow":"bevry","githubSponsorsUsername":"balupton","thanksdevGithubUsername":"bevry","buymeacoffeeUsername":"balupton","cryptoURL":"https://bevry.me/crypto","flattrUsername":"balupton","liberapayUsername":"bevry","opencollectiveUsername":"bevry","patreonUsername":"bevry","paypalURL":"https://bevry.me/paypal","wishlistURL":"https://bevry.me/wishlist","discordServerID":"1147436445783560193","discordServerInvite":"nQuXddV7VP","twitchUsername":"balupton","githubUsername":"bevry","githubRepository":"pluginloader","githubSlug":"bevry/pluginloader","npmPackageName":"@bevry/pluginloader"}},"funding":"https://bevry.me/fund","author":{"name":"2018+ Benjamin Lupton","email":"b@lupton.cc","url":"https://balupton.com"},"maintainers":[{"name":"bevryme","email":"us@bevry.me"}],"contributors":[{"name":"Benjamin Lupton","email":"b@lupton.cc","url":"https://github.com/balupton"}],"bugs":{"url":"https://github.com/bevry/pluginloader/issues"},"repository":{"type":"git","url":"git+https://github.com/bevry/pluginloader.git"},"engines":{"node":">=10"},"editions":[{"description":"TypeScript source code with Import for modules","directory":"source","entry":"index.ts","tags":["source","typescript","import"],"engines":false},{"description":"TypeScript compiled against ES2022 for Node.js 12 || 14 || 16 || 18 || 20 || 21 with Require for modules","directory":"edition-es2022","entry":"index.js","tags":["compiled","javascript","es2022","require"],"engines":{"node":"12 || 14 || 16 || 18 || 20 || 21","browsers":false}},{"description":"TypeScript compiled against ES2021 for Node.js 10 || 12 || 14 || 16 || 18 || 20 || 21 with Require for modules","directory":"edition-es2021","entry":"index.js","tags":["compiled","javascript","es2021","require"],"engines":{"node":"10 || 12 || 14 || 16 || 18 || 20 || 21","browsers":false}}],"types":"./compiled-types/","type":"module","main":"index.cjs","dependencies":{"editions":"^6.13.0","errlop":"^7.2.0","typechecker":"^8.2.0","version-range":"^4.2.0"},"devDependencies":{"@bevry/update-contributors":"^1.23.0","@types/node":"^20.9.2","@typescript-eslint/eslint-plugin":"^6.11.0","@typescript-eslint/parser":"^6.11.0","assert-helpers":"^11.4.0","eslint":"^8.54.0","eslint-config-bevry":"^5.0.0","eslint-config-prettier":"^9.0.0","eslint-plugin-prettier":"^5.0.1","filedirname":"^2.10.0","kava":"^7.2.0","prettier":"^3.1.0","projectz":"^3.2.0","surge":"^0.23.1","typedoc":"^0.25.3","typescript":"5.2.2","valid-directory":"^4.4.0"},"scripts":{"our:clean":"rm -rf ./docs ./edition* ./es2015 ./es5 ./out ./.next","our:compile":"npm run our:compile:edition-es2021 && npm run our:compile:edition-es2022 && npm run our:compile:types","our:compile:edition-es2021":"tsc --module commonjs --target ES2021 --outDir ./edition-es2021 --project tsconfig.json && ( test ! -d edition-es2021/source || ( mv edition-es2021/source edition-temp && rm -rf edition-es2021 && mv edition-temp edition-es2021 ) ) && printf '%s' '{\"type\": \"commonjs\"}' > edition-es2021/package.json","our:compile:edition-es2022":"tsc --module commonjs --target ES2022 --outDir ./edition-es2022 --project tsconfig.json && ( test ! -d edition-es2022/source || ( mv edition-es2022/source edition-temp && rm -rf edition-es2022 && mv edition-temp edition-es2022 ) ) && printf '%s' '{\"type\": \"commonjs\"}' > edition-es2022/package.json","our:compile:types":"tsc --project tsconfig.json --emitDeclarationOnly --declaration --declarationMap --declarationDir ./compiled-types && ( test ! -d compiled-types/source || ( mv compiled-types/source edition-temp && rm -rf compiled-types && mv edition-temp compiled-types ) )","our:deploy":"printf '%s\n' 'no need for this project'","our:meta":"npm run our:meta:contributors && npm run our:meta:docs && npm run our:meta:projectz","our:meta:contributors":"update-contributors","our:meta:docs":"npm run our:meta:docs:typedoc","our:meta:docs:typedoc":"rm -rf ./docs && typedoc --exclude '**/+(*test*|node_modules)' --excludeExternals --out ./docs ./source","our:meta:projectz":"projectz compile","our:release":"npm run our:release:prepare && npm run our:release:check-changelog && npm run our:release:check-dirty && npm run our:release:tag && npm run our:release:push","our:release:check-changelog":"cat ./HISTORY.md | grep \"v$npm_package_version\" || (printf '%s\n' \"add a changelog entry for v$npm_package_version\" && exit -1)","our:release:check-dirty":"git diff --exit-code","our:release:prepare":"npm run our:clean && npm run our:compile && npm run our:test && npm run our:meta","our:release:push":"git push origin && git push origin --tags","our:release:tag":"export MESSAGE=$(cat ./HISTORY.md | sed -n \"/## v$npm_package_version/,/##/p\" | sed 's/## //' | awk 'NR>1{print buf}{buf = $0}') && test \"$MESSAGE\" || (printf '%s\n' 'proper changelog entry not found' && exit -1) && git tag \"v$npm_package_version\" -am \"$MESSAGE\"","our:setup":"npm run our:setup:install","our:setup:install":"npm install","our:test":"npm run our:verify && npm test","our:verify":"npm run our:verify:directory && npm run our:verify:eslint && npm run our:verify:prettier","our:verify:directory":"valid-directory","our:verify:eslint":"eslint --fix --ignore-pattern '**/*.d.ts' --ignore-pattern '**/vendor/' --ignore-pattern '**/node_modules/' --ext .mjs,.js,.jsx,.ts,.tsx ./source","our:verify:prettier":"prettier --write .","test":"node ./test.cjs"},"eslintConfig":{"extends":["bevry"]},"prettier":{"semi":false,"singleQuote":true,"trailingComma":"es5"},"boundation":{"sourceModule":false},"_id":"@bevry/pluginloader@4.12.0-next.1700436019.c8bb9bddb4579326954e85f3eda36536665b1c67","readme":"<!-- TITLE/ -->\n\n<h1>@bevry/pluginloader</h1>\n\n<!-- /TITLE -->\n\n\n<!-- BADGES/ -->\n\n<span class=\"badge-githubworkflow\"><a href=\"https://github.com/bevry/pluginloader/actions?query=workflow%3Abevry\" title=\"View the status of this project's GitHub Workflow: bevry\"><img src=\"https://github.com/bevry/pluginloader/workflows/bevry/badge.svg\" alt=\"Status of the GitHub Workflow: bevry\" /></a></span>\n<span class=\"badge-npmversion\"><a href=\"https://npmjs.org/package/@bevry/pluginloader\" title=\"View this project on NPM\"><img src=\"https://img.shields.io/npm/v/@bevry/pluginloader.svg\" alt=\"NPM version\" /></a></span>\n<span class=\"badge-npmdownloads\"><a href=\"https://npmjs.org/package/@bevry/pluginloader\" title=\"View this project on NPM\"><img src=\"https://img.shields.io/npm/dm/@bevry/pluginloader.svg\" alt=\"NPM downloads\" /></a></span>\n<br class=\"badge-separator\" />\n<span class=\"badge-githubsponsors\"><a href=\"https://github.com/sponsors/balupton\" title=\"Donate to this project using GitHub Sponsors\"><img src=\"https://img.shields.io/badge/github-donate-yellow.svg\" alt=\"GitHub Sponsors donate button\" /></a></span>\n<span class=\"badge-thanksdev\"><a href=\"https://thanks.dev/u/gh/bevry\" title=\"Donate to this project using ThanksDev\"><img src=\"https://img.shields.io/badge/thanksdev-donate-yellow.svg\" alt=\"ThanksDev donate button\" /></a></span>\n<span class=\"badge-patreon\"><a href=\"https://patreon.com/bevry\" title=\"Donate to this project using Patreon\"><img src=\"https://img.shields.io/badge/patreon-donate-yellow.svg\" alt=\"Patreon donate button\" /></a></span>\n<span class=\"badge-liberapay\"><a href=\"https://liberapay.com/bevry\" title=\"Donate to this project using Liberapay\"><img src=\"https://img.shields.io/badge/liberapay-donate-yellow.svg\" alt=\"Liberapay donate button\" /></a></span>\n<span class=\"badge-buymeacoffee\"><a href=\"https://buymeacoffee.com/balupton\" title=\"Donate to this project using Buy Me A Coffee\"><img src=\"https://img.shields.io/badge/buy%20me%20a%20coffee-donate-yellow.svg\" alt=\"Buy Me A Coffee donate button\" /></a></span>\n<span class=\"badge-opencollective\"><a href=\"https://opencollective.com/bevry\" title=\"Donate to this project using Open Collective\"><img src=\"https://img.shields.io/badge/open%20collective-donate-yellow.svg\" alt=\"Open Collective donate button\" /></a></span>\n<span class=\"badge-crypto\"><a href=\"https://bevry.me/crypto\" title=\"Donate to this project using Cryptocurrency\"><img src=\"https://img.shields.io/badge/crypto-donate-yellow.svg\" alt=\"crypto donate button\" /></a></span>\n<span class=\"badge-paypal\"><a href=\"https://bevry.me/paypal\" title=\"Donate to this project using Paypal\"><img src=\"https://img.shields.io/badge/paypal-donate-yellow.svg\" alt=\"PayPal donate button\" /></a></span>\n<br class=\"badge-separator\" />\n<span class=\"badge-discord\"><a href=\"https://discord.gg/nQuXddV7VP\" title=\"Join this project's community on Discord\"><img src=\"https://img.shields.io/discord/1147436445783560193?logo=discord&amp;label=discord\" alt=\"Discord server badge\" /></a></span>\n<span class=\"badge-twitch\"><a href=\"https://www.twitch.tv/balupton\" title=\"Join this project's community on Twitch\"><img src=\"https://img.shields.io/twitch/status/balupton?logo=twitch\" alt=\"Twitch community badge\" /></a></span>\n\n<!-- /BADGES -->\n\n\n<!-- DESCRIPTION/ -->\n\nA class for loading, verifying, and creating plugins. Used by DocPad for years.\n\n<!-- /DESCRIPTION -->\n\n\n## Usage\n\n[Complete API Documentation.](http://master.pluginloader.bevry.surge.sh/docs/)\n\n### Basics\n\nCreate your project:\n\n1. `mkdir my-project`\n1. `cd my-project`\n\nCreate your plugin:\n\n1. `mkdir myplugin`\n1. `cd myplugin`\n1. `npm init`\n1. `index.js` to:\n\n    ```javascript\n    module.exports = function (BasePlugin) {\n        return class MyPlugin extends BasePlugin {\n            constructor(...args) {\n                super(...args)\n                console.log('hello from my plugin')\n            }\n        }\n    }\n    ```\n\n1. `cd ..`\n\nCreate your plugin loader:\n\n1. `mkdir myapp`\n1. `cd myapp`\n1. `npm init`\n1. `index.js` to:\n\n    ```javascript\n    import PluginLoader from '@bevry/pluginloader'\n\n    class BasePlugin {\n        constructor() {\n            console.log('hello from base plugin')\n        }\n    }\n\n    const pluginLoader = new PluginLoader({\n        BasePlugin,\n        pluginPath: require('path').resolve(__dirname, '..', 'myplugin'),\n    })\n    ```\n\n1. `cd ..`\n\nRun the project:\n\n1. `node myapp/index.js`\n\n### Ecosystem\n\n-   [pluginclerk](https://github.com/bevry/pluginclerk) a project for fetching compatible plugins from the npm registry\n-   [docpad-baseplugin](https://github.com/docpad/docpad-baseplugin) the BasePlugin class that DocPad uses\n-   [docpad-plugintester](https://github.com/docpad/docpad-plugintester) testing helpers for DocPad plugins\n\n<!-- INSTALL/ -->\n\n<h2>Install</h2>\n\n<a href=\"https://npmjs.com\" title=\"npm is a package manager for javascript\"><h3>npm</h3></a>\n<ul>\n<li>Install: <code>npm install --save @bevry/pluginloader</code></li>\n<li>Import: <code>import * as pkg from ('@bevry/pluginloader')</code></li>\n<li>Require: <code>const pkg = require('@bevry/pluginloader')</code></li>\n</ul>\n\n<h3><a href=\"https://editions.bevry.me\" title=\"Editions are the best way to produce and consume packages you care about.\">Editions</a></h3>\n\n<p>This package is published with the following editions:</p>\n\n<ul><li><code>@bevry/pluginloader</code> aliases <code>@bevry/pluginloader/index.cjs</code> which uses the <a href=\"https://github.com/bevry/editions\" title=\"You can use the Editions Autoloader to autoload the appropriate edition for your consumers environment\">Editions Autoloader</a> to automatically select the correct edition for the consumer's environment</li>\n<li><code>@bevry/pluginloader/source/index.ts</code> is <a href=\"https://www.typescriptlang.org/\" title=\"TypeScript is a typed superset of JavaScript that compiles to plain JavaScript. \">TypeScript</a> source code with <a href=\"https://babeljs.io/docs/learn-es2015/#modules\" title=\"ECMAScript Modules\">Import</a> for modules</li>\n<li><code>@bevry/pluginloader/edition-es2022/index.js</code> is <a href=\"https://www.typescriptlang.org/\" title=\"TypeScript is a typed superset of JavaScript that compiles to plain JavaScript. \">TypeScript</a> compiled against ES2022 for <a href=\"https://nodejs.org\" title=\"Node.js is a JavaScript runtime built on Chrome's V8 JavaScript engine\">Node.js</a> 12 || 14 || 16 || 18 || 20 || 21 with <a href=\"https://nodejs.org/dist/latest-v5.x/docs/api/modules.html\" title=\"Node/CJS Modules\">Require</a> for modules</li>\n<li><code>@bevry/pluginloader/edition-es2021/index.js</code> is <a href=\"https://www.typescriptlang.org/\" title=\"TypeScript is a typed superset of JavaScript that compiles to plain JavaScript. \">TypeScript</a> compiled against ES2021 for <a href=\"https://nodejs.org\" title=\"Node.js is a JavaScript runtime built on Chrome's V8 JavaScript engine\">Node.js</a> 10 || 12 || 14 || 16 || 18 || 20 || 21 with <a href=\"https://nodejs.org/dist/latest-v5.x/docs/api/modules.html\" title=\"Node/CJS Modules\">Require</a> for modules</li></ul>\n\n<!-- /INSTALL -->\n\n\n<!-- HISTORY/ -->\n\n<h2>History</h2>\n\n<a href=\"https://github.com/bevry/pluginloader/blob/master/HISTORY.md#files\">Discover the release history by heading on over to the <code>HISTORY.md</code> file.</a>\n\n<!-- /HISTORY -->\n\n\n<!-- CONTRIBUTE/ -->\n\n<h2>Contribute</h2>\n\n<a href=\"https://github.com/bevry/pluginloader/blob/master/CONTRIBUTING.md#files\">Discover how you can contribute by heading on over to the <code>CONTRIBUTING.md</code> file.</a>\n\n<!-- /CONTRIBUTE -->\n\n\n<!-- BACKERS/ -->\n\n<h2>Backers</h2>\n\n<h3>Maintainers</h3>\n\nThese amazing people are maintaining this project:\n\n<ul><li><a href=\"https://balupton.com\">Benjamin Lupton</a> — <a href=\"https://github.com/bevry/pluginloader/commits?author=balupton\" title=\"View the GitHub contributions of Benjamin Lupton on repository bevry/pluginloader\">view contributions</a></li></ul>\n\n<h3>Sponsors</h3>\n\nNo sponsors yet! Will you be the first?\n\n<span class=\"badge-githubsponsors\"><a href=\"https://github.com/sponsors/balupton\" title=\"Donate to this project using GitHub Sponsors\"><img src=\"https://img.shields.io/badge/github-donate-yellow.svg\" alt=\"GitHub Sponsors donate button\" /></a></span>\n<span class=\"badge-thanksdev\"><a href=\"https://thanks.dev/u/gh/bevry\" title=\"Donate to this project using ThanksDev\"><img src=\"https://img.shields.io/badge/thanksdev-donate-yellow.svg\" alt=\"ThanksDev donate button\" /></a></span>\n<span class=\"badge-patreon\"><a href=\"https://patreon.com/bevry\" title=\"Donate to this project using Patreon\"><img src=\"https://img.shields.io/badge/patreon-donate-yellow.svg\" alt=\"Patreon donate button\" /></a></span>\n<span class=\"badge-liberapay\"><a href=\"https://liberapay.com/bevry\" title=\"Donate to this project using Liberapay\"><img src=\"https://img.shields.io/badge/liberapay-donate-yellow.svg\" alt=\"Liberapay donate button\" /></a></span>\n<span class=\"badge-buymeacoffee\"><a href=\"https://buymeacoffee.com/balupton\" title=\"Donate to this project using Buy Me A Coffee\"><img src=\"https://img.shields.io/badge/buy%20me%20a%20coffee-donate-yellow.svg\" alt=\"Buy Me A Coffee donate button\" /></a></span>\n<span class=\"badge-opencollective\"><a href=\"https://opencollective.com/bevry\" title=\"Donate to this project using Open Collective\"><img src=\"https://img.shields.io/badge/open%20collective-donate-yellow.svg\" alt=\"Open Collective donate button\" /></a></span>\n<span class=\"badge-crypto\"><a href=\"https://bevry.me/crypto\" title=\"Donate to this project using Cryptocurrency\"><img src=\"https://img.shields.io/badge/crypto-donate-yellow.svg\" alt=\"crypto donate button\" /></a></span>\n<span class=\"badge-paypal\"><a href=\"https://bevry.me/paypal\" title=\"Donate to this project using Paypal\"><img src=\"https://img.shields.io/badge/paypal-donate-yellow.svg\" alt=\"PayPal donate button\" /></a></span>\n\n<h3>Contributors</h3>\n\nThese amazing people have contributed code to this project:\n\n<ul><li><a href=\"https://balupton.com\">Benjamin Lupton</a> — <a href=\"https://github.com/bevry/pluginloader/commits?author=balupton\" title=\"View the GitHub contributions of Benjamin Lupton on repository bevry/pluginloader\">view contributions</a></li></ul>\n\n<a href=\"https://github.com/bevry/pluginloader/blob/master/CONTRIBUTING.md#files\">Discover how you can contribute by heading on over to the <code>CONTRIBUTING.md</code> file.</a>\n\n<!-- /BACKERS -->\n\n\n<!-- LICENSE/ -->\n\n<h2>License</h2>\n\nUnless stated otherwise all works are:\n\n<ul><li>Copyright &copy; 2018+ <a href=\"https://balupton.com\">Benjamin Lupton</a></li></ul>\n\nand licensed under:\n\n<ul><li><a href=\"http://spdx.org/licenses/Artistic-2.0.html\">Artistic License 2.0</a></li></ul>\n\n<!-- /LICENSE -->\n","readmeFilename":"README.md","gitHead":"c8bb9bddb4579326954e85f3eda36536665b1c67","_nodeVersion":"20.9.0","_npmVersion":"10.1.0","dist":{"integrity":"sha512-eORut2cbRLaZ9d0sYeBozf17VIqIzLgdRpePtKMA64Snsh6P3R8gWa6Zl/nNHYy8cdHlhdvVefC0WmFQb5EaAQ==","shasum":"01c6fe149c31990ba200a568a994a7895c3fca57","tarball":"https://registry.npmjs.org/@bevry/pluginloader/-/pluginloader-4.12.0-next.1700436019.c8bb9bddb4579326954e85f3eda36536665b1c67.tgz","fileCount":14,"unpackedSize":64134,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFX3oZuzp5dSSTk7XA4osNgiUdR/G5dRfqGvXmeda3brAiByPNH56mx2yXNXymsrsodvj6XgUbhtwfdNcxBfigDdig=="}]},"_npmUser":{"name":"bevryme","email":"us@bevry.me"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/pluginloader_4.12.0-next.1700436019.c8bb9bddb4579326954e85f3eda36536665b1c67_1700436020524_0.5680642097077402"},"_hasShrinkwrap":false},"4.13.0":{"name":"@bevry/pluginloader","version":"4.13.0","description":"A class for loading, verifying, and creating plugins. Used by DocPad for years.","homepage":"https://github.com/bevry/pluginloader","license":"Artistic-2.0","keywords":["bevry","docpad","es2021","es2022","loader","node","plugin","plugins","typed","types","typescript"],"badges":{"list":["githubworkflow","npmversion","npmdownloads","---","githubsponsors","thanksdev","patreon","liberapay","buymeacoffee","opencollective","crypto","paypal","---","discord","twitch"],"config":{"githubWorkflow":"bevry","githubSponsorsUsername":"balupton","thanksdevGithubUsername":"bevry","buymeacoffeeUsername":"balupton","cryptoURL":"https://bevry.me/crypto","flattrUsername":"balupton","liberapayUsername":"bevry","opencollectiveUsername":"bevry","patreonUsername":"bevry","paypalURL":"https://bevry.me/paypal","wishlistURL":"https://bevry.me/wishlist","discordServerID":"1147436445783560193","discordServerInvite":"nQuXddV7VP","twitchUsername":"balupton","githubUsername":"bevry","githubRepository":"pluginloader","githubSlug":"bevry/pluginloader","npmPackageName":"@bevry/pluginloader"}},"funding":"https://bevry.me/fund","author":{"name":"2018+ Benjamin Lupton","email":"b@lupton.cc","url":"https://balupton.com"},"maintainers":[{"name":"bevryme","email":"us@bevry.me"}],"contributors":[{"name":"Benjamin Lupton","email":"b@lupton.cc","url":"https://github.com/balupton"}],"bugs":{"url":"https://github.com/bevry/pluginloader/issues"},"repository":{"type":"git","url":"git+https://github.com/bevry/pluginloader.git"},"engines":{"node":">=10"},"editions":[{"description":"TypeScript source code with Import for modules","directory":"source","entry":"index.ts","tags":["source","typescript","import"],"engines":false},{"description":"TypeScript compiled against ES2022 for Node.js 12 || 14 || 16 || 18 || 20 || 21 with Require for modules","directory":"edition-es2022","entry":"index.js","tags":["compiled","javascript","es2022","require"],"engines":{"node":"12 || 14 || 16 || 18 || 20 || 21","browsers":false}},{"description":"TypeScript compiled against ES2021 for Node.js 10 || 12 || 14 || 16 || 18 || 20 || 21 with Require for modules","directory":"edition-es2021","entry":"index.js","tags":["compiled","javascript","es2021","require"],"engines":{"node":"10 || 12 || 14 || 16 || 18 || 20 || 21","browsers":false}},{"description":"TypeScript compiled Types with Import for modules","directory":"edition-types","entry":"index.d.ts","tags":["compiled","types","import"],"engines":false}],"types":"edition-types/index.d.ts","type":"module","main":"index.cjs","dependencies":{"editions":"^6.13.0","errlop":"^7.3.0","typechecker":"^8.5.0","version-range":"^4.3.0"},"devDependencies":{"@bevry/update-contributors":"^1.23.0","@types/node":"^20.9.3","@typescript-eslint/eslint-plugin":"^6.12.0","@typescript-eslint/parser":"^6.12.0","assert-helpers":"^11.5.0","eslint":"^8.54.0","eslint-config-bevry":"^5.1.0","eslint-config-prettier":"^9.0.0","eslint-plugin-prettier":"^5.0.1","filedirname":"^2.11.0","kava":"^7.3.0","prettier":"^3.1.0","projectz":"^3.2.0","surge":"^0.23.1","typedoc":"^0.25.3","typescript":"5.2.2","valid-directory":"^4.4.0"},"scripts":{"our:clean":"rm -rf ./docs ./edition* ./es2015 ./es5 ./out ./.next","our:compile":"npm run our:compile:edition-es2021 && npm run our:compile:edition-es2022 && npm run our:compile:edition-types","our:compile:edition-es2021":"tsc --module commonjs --target ES2021 --outDir ./edition-es2021 --project tsconfig.json && ( test ! -d edition-es2021/source || ( mv edition-es2021/source edition-temp && rm -rf edition-es2021 && mv edition-temp edition-es2021 ) ) && printf '%s' '{\"type\": \"commonjs\"}' > edition-es2021/package.json","our:compile:edition-es2022":"tsc --module commonjs --target ES2022 --outDir ./edition-es2022 --project tsconfig.json && ( test ! -d edition-es2022/source || ( mv edition-es2022/source edition-temp && rm -rf edition-es2022 && mv edition-temp edition-es2022 ) ) && printf '%s' '{\"type\": \"commonjs\"}' > edition-es2022/package.json","our:compile:edition-types":"tsc --emitDeclarationOnly --declaration --declarationMap --declarationDir ./edition-types --project tsconfig.json && ( test ! -d edition-types/source || ( mv edition-types/source edition-temp && rm -rf edition-types && mv edition-temp edition-types ) )","our:deploy":"printf '%s\n' 'no need for this project'","our:meta":"npm run our:meta:contributors && npm run our:meta:docs && npm run our:meta:projectz","our:meta:contributors":"update-contributors","our:meta:docs":"npm run our:meta:docs:typedoc","our:meta:docs:typedoc":"rm -rf ./docs && typedoc --exclude '**/+(*test*|node_modules)' --excludeExternals --out ./docs ./source","our:meta:projectz":"projectz compile","our:release":"npm run our:release:prepare && npm run our:release:check-changelog && npm run our:release:check-dirty && npm run our:release:tag && npm run our:release:push","our:release:check-changelog":"cat ./HISTORY.md | grep \"v$npm_package_version\" || (printf '%s\n' \"add a changelog entry for v$npm_package_version\" && exit -1)","our:release:check-dirty":"git diff --exit-code","our:release:prepare":"npm run our:clean && npm run our:compile && npm run our:test && npm run our:meta","our:release:push":"git push origin && git push origin --tags","our:release:tag":"export MESSAGE=$(cat ./HISTORY.md | sed -n \"/## v$npm_package_version/,/##/p\" | sed 's/## //' | awk 'NR>1{print buf}{buf = $0}') && test \"$MESSAGE\" || (printf '%s\n' 'proper changelog entry not found' && exit -1) && git tag \"v$npm_package_version\" -am \"$MESSAGE\"","our:setup":"npm run our:setup:install","our:setup:install":"npm install","our:test":"npm run our:verify && npm test","our:verify":"npm run our:verify:directory && npm run our:verify:eslint && npm run our:verify:prettier","our:verify:directory":"valid-directory","our:verify:eslint":"eslint --fix --ignore-pattern '**/*.d.ts' --ignore-pattern '**/vendor/' --ignore-pattern '**/node_modules/' --ext .mjs,.js,.jsx,.ts,.tsx ./source","our:verify:prettier":"prettier --write .","test":"node ./test.cjs"},"eslintConfig":{"extends":["bevry"]},"prettier":{"semi":false,"singleQuote":true,"trailingComma":"es5"},"boundation":{"sourceModule":false},"_id":"@bevry/pluginloader@4.13.0","gitHead":"9bcec341a81e3231ddb5edc8fca40f31ea5af305","_nodeVersion":"20.9.0","_npmVersion":"10.1.0","dist":{"integrity":"sha512-NqKFKbtBSz1EVEZHx4Vg2RklR7oIADcORnn2fkkn5X5nyg0UCUxqbNxVC0eNnY5Jl0U5guVn++P44vzwkPSXLw==","shasum":"9284e01ef03912c434000c2793904869e4b7692f","tarball":"https://registry.npmjs.org/@bevry/pluginloader/-/pluginloader-4.13.0.tgz","fileCount":14,"unpackedSize":64721,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDtQaLFKjO5ZAq6tCmxuHfCZXPtBl6YnheD72ecyIs8swIhAPXIqwB8rbEKocTW8pN9Z9umEzhV0cG3AaetJQp220sZ"}]},"_npmUser":{"name":"bevryme","email":"us@bevry.me"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/pluginloader_4.13.0_1700570817594_0.7474087464116135"},"_hasShrinkwrap":false},"4.13.0-next.1700570893.9bcec341a81e3231ddb5edc8fca40f31ea5af305":{"name":"@bevry/pluginloader","version":"4.13.0-next.1700570893.9bcec341a81e3231ddb5edc8fca40f31ea5af305","description":"A class for loading, verifying, and creating plugins. Used by DocPad for years.","homepage":"https://github.com/bevry/pluginloader","license":"Artistic-2.0","keywords":["bevry","docpad","es2021","es2022","loader","node","plugin","plugins","typed","types","typescript"],"badges":{"list":["githubworkflow","npmversion","npmdownloads","---","githubsponsors","thanksdev","patreon","liberapay","buymeacoffee","opencollective","crypto","paypal","---","discord","twitch"],"config":{"githubWorkflow":"bevry","githubSponsorsUsername":"balupton","thanksdevGithubUsername":"bevry","buymeacoffeeUsername":"balupton","cryptoURL":"https://bevry.me/crypto","flattrUsername":"balupton","liberapayUsername":"bevry","opencollectiveUsername":"bevry","patreonUsername":"bevry","paypalURL":"https://bevry.me/paypal","wishlistURL":"https://bevry.me/wishlist","discordServerID":"1147436445783560193","discordServerInvite":"nQuXddV7VP","twitchUsername":"balupton","githubUsername":"bevry","githubRepository":"pluginloader","githubSlug":"bevry/pluginloader","npmPackageName":"@bevry/pluginloader"}},"funding":"https://bevry.me/fund","author":{"name":"2018+ Benjamin Lupton","email":"b@lupton.cc","url":"https://balupton.com"},"maintainers":[{"name":"bevryme","email":"us@bevry.me"}],"contributors":[{"name":"Benjamin Lupton","email":"b@lupton.cc","url":"https://github.com/balupton"}],"bugs":{"url":"https://github.com/bevry/pluginloader/issues"},"repository":{"type":"git","url":"git+https://github.com/bevry/pluginloader.git"},"engines":{"node":">=10"},"editions":[{"description":"TypeScript source code with Import for modules","directory":"source","entry":"index.ts","tags":["source","typescript","import"],"engines":false},{"description":"TypeScript compiled against ES2022 for Node.js 12 || 14 || 16 || 18 || 20 || 21 with Require for modules","directory":"edition-es2022","entry":"index.js","tags":["compiled","javascript","es2022","require"],"engines":{"node":"12 || 14 || 16 || 18 || 20 || 21","browsers":false}},{"description":"TypeScript compiled against ES2021 for Node.js 10 || 12 || 14 || 16 || 18 || 20 || 21 with Require for modules","directory":"edition-es2021","entry":"index.js","tags":["compiled","javascript","es2021","require"],"engines":{"node":"10 || 12 || 14 || 16 || 18 || 20 || 21","browsers":false}},{"description":"TypeScript compiled Types with Import for modules","directory":"edition-types","entry":"index.d.ts","tags":["compiled","types","import"],"engines":false}],"types":"edition-types/index.d.ts","type":"module","main":"index.cjs","dependencies":{"editions":"^6.13.0","errlop":"^7.3.0","typechecker":"^8.5.0","version-range":"^4.3.0"},"devDependencies":{"@bevry/update-contributors":"^1.23.0","@types/node":"^20.9.3","@typescript-eslint/eslint-plugin":"^6.12.0","@typescript-eslint/parser":"^6.12.0","assert-helpers":"^11.5.0","eslint":"^8.54.0","eslint-config-bevry":"^5.1.0","eslint-config-prettier":"^9.0.0","eslint-plugin-prettier":"^5.0.1","filedirname":"^2.11.0","kava":"^7.3.0","prettier":"^3.1.0","projectz":"^3.2.0","surge":"^0.23.1","typedoc":"^0.25.3","typescript":"5.2.2","valid-directory":"^4.4.0"},"scripts":{"our:clean":"rm -rf ./docs ./edition* ./es2015 ./es5 ./out ./.next","our:compile":"npm run our:compile:edition-es2021 && npm run our:compile:edition-es2022 && npm run our:compile:edition-types","our:compile:edition-es2021":"tsc --module commonjs --target ES2021 --outDir ./edition-es2021 --project tsconfig.json && ( test ! -d edition-es2021/source || ( mv edition-es2021/source edition-temp && rm -rf edition-es2021 && mv edition-temp edition-es2021 ) ) && printf '%s' '{\"type\": \"commonjs\"}' > edition-es2021/package.json","our:compile:edition-es2022":"tsc --module commonjs --target ES2022 --outDir ./edition-es2022 --project tsconfig.json && ( test ! -d edition-es2022/source || ( mv edition-es2022/source edition-temp && rm -rf edition-es2022 && mv edition-temp edition-es2022 ) ) && printf '%s' '{\"type\": \"commonjs\"}' > edition-es2022/package.json","our:compile:edition-types":"tsc --emitDeclarationOnly --declaration --declarationMap --declarationDir ./edition-types --project tsconfig.json && ( test ! -d edition-types/source || ( mv edition-types/source edition-temp && rm -rf edition-types && mv edition-temp edition-types ) )","our:deploy":"printf '%s\n' 'no need for this project'","our:meta":"npm run our:meta:contributors && npm run our:meta:docs && npm run our:meta:projectz","our:meta:contributors":"update-contributors","our:meta:docs":"npm run our:meta:docs:typedoc","our:meta:docs:typedoc":"rm -rf ./docs && typedoc --exclude '**/+(*test*|node_modules)' --excludeExternals --out ./docs ./source","our:meta:projectz":"projectz compile","our:release":"npm run our:release:prepare && npm run our:release:check-changelog && npm run our:release:check-dirty && npm run our:release:tag && npm run our:release:push","our:release:check-changelog":"cat ./HISTORY.md | grep \"v$npm_package_version\" || (printf '%s\n' \"add a changelog entry for v$npm_package_version\" && exit -1)","our:release:check-dirty":"git diff --exit-code","our:release:prepare":"npm run our:clean && npm run our:compile && npm run our:test && npm run our:meta","our:release:push":"git push origin && git push origin --tags","our:release:tag":"export MESSAGE=$(cat ./HISTORY.md | sed -n \"/## v$npm_package_version/,/##/p\" | sed 's/## //' | awk 'NR>1{print buf}{buf = $0}') && test \"$MESSAGE\" || (printf '%s\n' 'proper changelog entry not found' && exit -1) && git tag \"v$npm_package_version\" -am \"$MESSAGE\"","our:setup":"npm run our:setup:install","our:setup:install":"npm install","our:test":"npm run our:verify && npm test","our:verify":"npm run our:verify:directory && npm run our:verify:eslint && npm run our:verify:prettier","our:verify:directory":"valid-directory","our:verify:eslint":"eslint --fix --ignore-pattern '**/*.d.ts' --ignore-pattern '**/vendor/' --ignore-pattern '**/node_modules/' --ext .mjs,.js,.jsx,.ts,.tsx ./source","our:verify:prettier":"prettier --write .","test":"node ./test.cjs"},"eslintConfig":{"extends":["bevry"]},"prettier":{"semi":false,"singleQuote":true,"trailingComma":"es5"},"boundation":{"sourceModule":false},"_id":"@bevry/pluginloader@4.13.0-next.1700570893.9bcec341a81e3231ddb5edc8fca40f31ea5af305","readme":"<!-- TITLE/ -->\n\n<h1>@bevry/pluginloader</h1>\n\n<!-- /TITLE -->\n\n\n<!-- BADGES/ -->\n\n<span class=\"badge-githubworkflow\"><a href=\"https://github.com/bevry/pluginloader/actions?query=workflow%3Abevry\" title=\"View the status of this project's GitHub Workflow: bevry\"><img src=\"https://github.com/bevry/pluginloader/workflows/bevry/badge.svg\" alt=\"Status of the GitHub Workflow: bevry\" /></a></span>\n<span class=\"badge-npmversion\"><a href=\"https://npmjs.org/package/@bevry/pluginloader\" title=\"View this project on NPM\"><img src=\"https://img.shields.io/npm/v/@bevry/pluginloader.svg\" alt=\"NPM version\" /></a></span>\n<span class=\"badge-npmdownloads\"><a href=\"https://npmjs.org/package/@bevry/pluginloader\" title=\"View this project on NPM\"><img src=\"https://img.shields.io/npm/dm/@bevry/pluginloader.svg\" alt=\"NPM downloads\" /></a></span>\n<br class=\"badge-separator\" />\n<span class=\"badge-githubsponsors\"><a href=\"https://github.com/sponsors/balupton\" title=\"Donate to this project using GitHub Sponsors\"><img src=\"https://img.shields.io/badge/github-donate-yellow.svg\" alt=\"GitHub Sponsors donate button\" /></a></span>\n<span class=\"badge-thanksdev\"><a href=\"https://thanks.dev/u/gh/bevry\" title=\"Donate to this project using ThanksDev\"><img src=\"https://img.shields.io/badge/thanksdev-donate-yellow.svg\" alt=\"ThanksDev donate button\" /></a></span>\n<span class=\"badge-patreon\"><a href=\"https://patreon.com/bevry\" title=\"Donate to this project using Patreon\"><img src=\"https://img.shields.io/badge/patreon-donate-yellow.svg\" alt=\"Patreon donate button\" /></a></span>\n<span class=\"badge-liberapay\"><a href=\"https://liberapay.com/bevry\" title=\"Donate to this project using Liberapay\"><img src=\"https://img.shields.io/badge/liberapay-donate-yellow.svg\" alt=\"Liberapay donate button\" /></a></span>\n<span class=\"badge-buymeacoffee\"><a href=\"https://buymeacoffee.com/balupton\" title=\"Donate to this project using Buy Me A Coffee\"><img src=\"https://img.shields.io/badge/buy%20me%20a%20coffee-donate-yellow.svg\" alt=\"Buy Me A Coffee donate button\" /></a></span>\n<span class=\"badge-opencollective\"><a href=\"https://opencollective.com/bevry\" title=\"Donate to this project using Open Collective\"><img src=\"https://img.shields.io/badge/open%20collective-donate-yellow.svg\" alt=\"Open Collective donate button\" /></a></span>\n<span class=\"badge-crypto\"><a href=\"https://bevry.me/crypto\" title=\"Donate to this project using Cryptocurrency\"><img src=\"https://img.shields.io/badge/crypto-donate-yellow.svg\" alt=\"crypto donate button\" /></a></span>\n<span class=\"badge-paypal\"><a href=\"https://bevry.me/paypal\" title=\"Donate to this project using Paypal\"><img src=\"https://img.shields.io/badge/paypal-donate-yellow.svg\" alt=\"PayPal donate button\" /></a></span>\n<br class=\"badge-separator\" />\n<span class=\"badge-discord\"><a href=\"https://discord.gg/nQuXddV7VP\" title=\"Join this project's community on Discord\"><img src=\"https://img.shields.io/discord/1147436445783560193?logo=discord&amp;label=discord\" alt=\"Discord server badge\" /></a></span>\n<span class=\"badge-twitch\"><a href=\"https://www.twitch.tv/balupton\" title=\"Join this project's community on Twitch\"><img src=\"https://img.shields.io/twitch/status/balupton?logo=twitch\" alt=\"Twitch community badge\" /></a></span>\n\n<!-- /BADGES -->\n\n\n<!-- DESCRIPTION/ -->\n\nA class for loading, verifying, and creating plugins. Used by DocPad for years.\n\n<!-- /DESCRIPTION -->\n\n\n## Usage\n\n[Complete API Documentation.](http://master.pluginloader.bevry.surge.sh/docs/)\n\n### Basics\n\nCreate your project:\n\n1. `mkdir my-project`\n1. `cd my-project`\n\nCreate your plugin:\n\n1. `mkdir myplugin`\n1. `cd myplugin`\n1. `npm init`\n1. `index.js` to:\n\n    ```javascript\n    module.exports = function (BasePlugin) {\n        return class MyPlugin extends BasePlugin {\n            constructor(...args) {\n                super(...args)\n                console.log('hello from my plugin')\n            }\n        }\n    }\n    ```\n\n1. `cd ..`\n\nCreate your plugin loader:\n\n1. `mkdir myapp`\n1. `cd myapp`\n1. `npm init`\n1. `index.js` to:\n\n    ```javascript\n    import PluginLoader from '@bevry/pluginloader'\n\n    class BasePlugin {\n        constructor() {\n            console.log('hello from base plugin')\n        }\n    }\n\n    const pluginLoader = new PluginLoader({\n        BasePlugin,\n        pluginPath: require('path').resolve(__dirname, '..', 'myplugin'),\n    })\n    ```\n\n1. `cd ..`\n\nRun the project:\n\n1. `node myapp/index.js`\n\n### Ecosystem\n\n-   [pluginclerk](https://github.com/bevry/pluginclerk) a project for fetching compatible plugins from the npm registry\n-   [docpad-baseplugin](https://github.com/docpad/docpad-baseplugin) the BasePlugin class that DocPad uses\n-   [docpad-plugintester](https://github.com/docpad/docpad-plugintester) testing helpers for DocPad plugins\n\n<!-- INSTALL/ -->\n\n<h2>Install</h2>\n\n<a href=\"https://npmjs.com\" title=\"npm is a package manager for javascript\"><h3>npm</h3></a>\n<ul>\n<li>Install: <code>npm install --save @bevry/pluginloader</code></li>\n<li>Import: <code>import * as pkg from ('@bevry/pluginloader')</code></li>\n<li>Require: <code>const pkg = require('@bevry/pluginloader')</code></li>\n</ul>\n\n<h3><a href=\"https://editions.bevry.me\" title=\"Editions are the best way to produce and consume packages you care about.\">Editions</a></h3>\n\n<p>This package is published with the following editions:</p>\n\n<ul><li><code>@bevry/pluginloader</code> aliases <code>@bevry/pluginloader/index.cjs</code> which uses the <a href=\"https://github.com/bevry/editions\" title=\"You can use the Editions Autoloader to autoload the appropriate edition for your consumers environment\">Editions Autoloader</a> to automatically select the correct edition for the consumer's environment</li>\n<li><code>@bevry/pluginloader/source/index.ts</code> is <a href=\"https://www.typescriptlang.org/\" title=\"TypeScript is a typed superset of JavaScript that compiles to plain JavaScript. \">TypeScript</a> source code with <a href=\"https://babeljs.io/docs/learn-es2015/#modules\" title=\"ECMAScript Modules\">Import</a> for modules</li>\n<li><code>@bevry/pluginloader/edition-es2022/index.js</code> is <a href=\"https://www.typescriptlang.org/\" title=\"TypeScript is a typed superset of JavaScript that compiles to plain JavaScript. \">TypeScript</a> compiled against ES2022 for <a href=\"https://nodejs.org\" title=\"Node.js is a JavaScript runtime built on Chrome's V8 JavaScript engine\">Node.js</a> 12 || 14 || 16 || 18 || 20 || 21 with <a href=\"https://nodejs.org/dist/latest-v5.x/docs/api/modules.html\" title=\"Node/CJS Modules\">Require</a> for modules</li>\n<li><code>@bevry/pluginloader/edition-es2021/index.js</code> is <a href=\"https://www.typescriptlang.org/\" title=\"TypeScript is a typed superset of JavaScript that compiles to plain JavaScript. \">TypeScript</a> compiled against ES2021 for <a href=\"https://nodejs.org\" title=\"Node.js is a JavaScript runtime built on Chrome's V8 JavaScript engine\">Node.js</a> 10 || 12 || 14 || 16 || 18 || 20 || 21 with <a href=\"https://nodejs.org/dist/latest-v5.x/docs/api/modules.html\" title=\"Node/CJS Modules\">Require</a> for modules</li>\n<li><code>@bevry/pluginloader/edition-types/index.d.ts</code> is <a href=\"https://www.typescriptlang.org/\" title=\"TypeScript is a typed superset of JavaScript that compiles to plain JavaScript. \">TypeScript</a> compiled Types with <a href=\"https://babeljs.io/docs/learn-es2015/#modules\" title=\"ECMAScript Modules\">Import</a> for modules</li></ul>\n\n<!-- /INSTALL -->\n\n\n<!-- HISTORY/ -->\n\n<h2>History</h2>\n\n<a href=\"https://github.com/bevry/pluginloader/blob/master/HISTORY.md#files\">Discover the release history by heading on over to the <code>HISTORY.md</code> file.</a>\n\n<!-- /HISTORY -->\n\n\n<!-- CONTRIBUTE/ -->\n\n<h2>Contribute</h2>\n\n<a href=\"https://github.com/bevry/pluginloader/blob/master/CONTRIBUTING.md#files\">Discover how you can contribute by heading on over to the <code>CONTRIBUTING.md</code> file.</a>\n\n<!-- /CONTRIBUTE -->\n\n\n<!-- BACKERS/ -->\n\n<h2>Backers</h2>\n\n<h3>Maintainers</h3>\n\nThese amazing people are maintaining this project:\n\n<ul><li><a href=\"https://balupton.com\">Benjamin Lupton</a> — <a href=\"https://github.com/bevry/pluginloader/commits?author=balupton\" title=\"View the GitHub contributions of Benjamin Lupton on repository bevry/pluginloader\">view contributions</a></li></ul>\n\n<h3>Sponsors</h3>\n\nNo sponsors yet! Will you be the first?\n\n<span class=\"badge-githubsponsors\"><a href=\"https://github.com/sponsors/balupton\" title=\"Donate to this project using GitHub Sponsors\"><img src=\"https://img.shields.io/badge/github-donate-yellow.svg\" alt=\"GitHub Sponsors donate button\" /></a></span>\n<span class=\"badge-thanksdev\"><a href=\"https://thanks.dev/u/gh/bevry\" title=\"Donate to this project using ThanksDev\"><img src=\"https://img.shields.io/badge/thanksdev-donate-yellow.svg\" alt=\"ThanksDev donate button\" /></a></span>\n<span class=\"badge-patreon\"><a href=\"https://patreon.com/bevry\" title=\"Donate to this project using Patreon\"><img src=\"https://img.shields.io/badge/patreon-donate-yellow.svg\" alt=\"Patreon donate button\" /></a></span>\n<span class=\"badge-liberapay\"><a href=\"https://liberapay.com/bevry\" title=\"Donate to this project using Liberapay\"><img src=\"https://img.shields.io/badge/liberapay-donate-yellow.svg\" alt=\"Liberapay donate button\" /></a></span>\n<span class=\"badge-buymeacoffee\"><a href=\"https://buymeacoffee.com/balupton\" title=\"Donate to this project using Buy Me A Coffee\"><img src=\"https://img.shields.io/badge/buy%20me%20a%20coffee-donate-yellow.svg\" alt=\"Buy Me A Coffee donate button\" /></a></span>\n<span class=\"badge-opencollective\"><a href=\"https://opencollective.com/bevry\" title=\"Donate to this project using Open Collective\"><img src=\"https://img.shields.io/badge/open%20collective-donate-yellow.svg\" alt=\"Open Collective donate button\" /></a></span>\n<span class=\"badge-crypto\"><a href=\"https://bevry.me/crypto\" title=\"Donate to this project using Cryptocurrency\"><img src=\"https://img.shields.io/badge/crypto-donate-yellow.svg\" alt=\"crypto donate button\" /></a></span>\n<span class=\"badge-paypal\"><a href=\"https://bevry.me/paypal\" title=\"Donate to this project using Paypal\"><img src=\"https://img.shields.io/badge/paypal-donate-yellow.svg\" alt=\"PayPal donate button\" /></a></span>\n\n<h3>Contributors</h3>\n\nThese amazing people have contributed code to this project:\n\n<ul><li><a href=\"https://balupton.com\">Benjamin Lupton</a> — <a href=\"https://github.com/bevry/pluginloader/commits?author=balupton\" title=\"View the GitHub contributions of Benjamin Lupton on repository bevry/pluginloader\">view contributions</a></li></ul>\n\n<a href=\"https://github.com/bevry/pluginloader/blob/master/CONTRIBUTING.md#files\">Discover how you can contribute by heading on over to the <code>CONTRIBUTING.md</code> file.</a>\n\n<!-- /BACKERS -->\n\n\n<!-- LICENSE/ -->\n\n<h2>License</h2>\n\nUnless stated otherwise all works are:\n\n<ul><li>Copyright &copy; 2018+ <a href=\"https://balupton.com\">Benjamin Lupton</a></li></ul>\n\nand licensed under:\n\n<ul><li><a href=\"http://spdx.org/licenses/Artistic-2.0.html\">Artistic License 2.0</a></li></ul>\n\n<!-- /LICENSE -->\n","readmeFilename":"README.md","gitHead":"9bcec341a81e3231ddb5edc8fca40f31ea5af305","_nodeVersion":"20.9.0","_npmVersion":"10.1.0","dist":{"integrity":"sha512-4aCz8DWubU+Ta7pac42U6XHpWC4YxpJcY6/9GRYF6ECcds8377Ae/GFdzwRoHcCqBc7uL+RhKQJ1yVznx0DllQ==","shasum":"bcc6704ec7df9b8896686bd7573f88a1ff1b1610","tarball":"https://registry.npmjs.org/@bevry/pluginloader/-/pluginloader-4.13.0-next.1700570893.9bcec341a81e3231ddb5edc8fca40f31ea5af305.tgz","fileCount":14,"unpackedSize":64779,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHb135rpeizHifZ6ILrAhBx5BhD+ot03TsH5Xci49tbXAiEA8ebiQLMPZ8AqbWNehQlLFVpVRJ7PzbB8LOHocznHRFU="}]},"_npmUser":{"name":"bevryme","email":"us@bevry.me"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/pluginloader_4.13.0-next.1700570893.9bcec341a81e3231ddb5edc8fca40f31ea5af305_1700570894769_0.2866502326403799"},"_hasShrinkwrap":false},"5.0.0-next.1700857352.1427218d71ab9a6930defc6e69b89765140ec68b":{"name":"@bevry/pluginloader","version":"5.0.0-next.1700857352.1427218d71ab9a6930defc6e69b89765140ec68b","description":"A class for loading, verifying, and creating plugins. Used by DocPad for years.","homepage":"https://github.com/bevry/pluginloader","license":"Artistic-2.0","keywords":["bevry","deno","deno-edition","deno-entry","denoland","docpad","es2021","es2022","loader","node","plugin","plugins","typed","types","typescript"],"badges":{"list":["githubworkflow","npmversion","npmdownloads","---","githubsponsors","thanksdev","patreon","liberapay","buymeacoffee","opencollective","crypto","paypal","---","discord","twitch"],"config":{"githubWorkflow":"bevry","githubSponsorsUsername":"balupton","thanksdevGithubUsername":"bevry","buymeacoffeeUsername":"balupton","cryptoURL":"https://bevry.me/crypto","flattrUsername":"balupton","liberapayUsername":"bevry","opencollectiveUsername":"bevry","patreonUsername":"bevry","paypalURL":"https://bevry.me/paypal","wishlistURL":"https://bevry.me/wishlist","discordServerID":"1147436445783560193","discordServerInvite":"nQuXddV7VP","twitchUsername":"balupton","githubUsername":"bevry","githubRepository":"pluginloader","githubSlug":"bevry/pluginloader","npmPackageName":"@bevry/pluginloader"}},"funding":"https://bevry.me/fund","author":{"name":"2018+ Benjamin Lupton","email":"b@lupton.cc","url":"https://balupton.com"},"maintainers":[{"name":"bevryme","email":"us@bevry.me"}],"contributors":[{"name":"Benjamin Lupton","email":"b@lupton.cc","url":"https://github.com/balupton"}],"bugs":{"url":"https://github.com/bevry/pluginloader/issues"},"repository":{"type":"git","url":"git+https://github.com/bevry/pluginloader.git"},"engines":{"node":">=6"},"editions":[{"description":"TypeScript source code with Import for modules","directory":"source","entry":"index.ts","tags":["source","typescript","import"],"engines":false},{"description":"TypeScript compiled against ES2022 for Node.js 12 || 14 || 16 || 18 || 20 || 21 with Require for modules","directory":"edition-es2022","entry":"index.js","tags":["compiled","javascript","es2022","require"],"engines":{"node":"12 || 14 || 16 || 18 || 20 || 21","browsers":false}},{"description":"TypeScript compiled against ES2021 for Node.js 6 || 8 || 10 || 12 || 14 || 16 || 18 || 20 || 21 with Require for modules","directory":"edition-es2021","entry":"index.js","tags":["compiled","javascript","es2021","require"],"engines":{"node":"6 || 8 || 10 || 12 || 14 || 16 || 18 || 20 || 21","browsers":false}},{"description":"TypeScript compiled Types with Import for modules","directory":"edition-types","entry":"index.d.ts","tags":["compiled","types","import"],"engines":false}],"types":"edition-types/index.d.ts","type":"module","main":"index.cjs","deno":"edition-deno/index.ts","dependencies":{"editions":"^6.16.0","errlop":"^7.4.0","typechecker":"^8.5.0","version-range":"^4.7.0"},"devDependencies":{"@bevry/update-contributors":"^1.23.0","@types/node":"^20.10.0","@typescript-eslint/eslint-plugin":"^6.12.0","@typescript-eslint/parser":"^6.12.0","assert-helpers":"^11.6.0","eslint":"^8.54.0","eslint-config-bevry":"^5.2.0","eslint-config-prettier":"^9.0.0","eslint-plugin-prettier":"^5.0.1","filedirname":"^3.1.0","kava":"^7.4.0","prettier":"^3.1.0","projectz":"^3.3.0","surge":"^0.23.1","typedoc":"^0.25.3","typescript":"5.2.2","valid-directory":"^4.5.0"},"scripts":{"our:clean":"rm -rf ./docs ./edition* ./es2015 ./es5 ./out ./.next","our:compile":"npm run our:compile:edition-es2021 && npm run our:compile:edition-es2022 && npm run our:compile:edition-types","our:compile:edition-es2021":"tsc --module commonjs --target ES2021 --outDir ./edition-es2021 --project tsconfig.json && ( test ! -d edition-es2021/source || ( mv edition-es2021/source edition-temp && rm -rf edition-es2021 && mv edition-temp edition-es2021 ) ) && printf '%s' '{\"type\": \"commonjs\"}' > edition-es2021/package.json","our:compile:edition-es2022":"tsc --module commonjs --target ES2022 --outDir ./edition-es2022 --project tsconfig.json && ( test ! -d edition-es2022/source || ( mv edition-es2022/source edition-temp && rm -rf edition-es2022 && mv edition-temp edition-es2022 ) ) && printf '%s' '{\"type\": \"commonjs\"}' > edition-es2022/package.json","our:compile:edition-types":"tsc --emitDeclarationOnly --declaration --declarationMap --declarationDir ./edition-types --project tsconfig.json && ( test ! -d edition-types/source || ( mv edition-types/source edition-temp && rm -rf edition-types && mv edition-temp edition-types ) )","our:deploy":"printf '%s\n' 'no need for this project'","our:meta":"npm run our:meta:contributors && npm run our:meta:docs && npm run our:meta:projectz","our:meta:contributors":"update-contributors","our:meta:docs":"npm run our:meta:docs:typedoc","our:meta:docs:typedoc":"rm -rf ./docs && typedoc --exclude '**/+(*test*|node_modules)' --excludeExternals --out ./docs ./source","our:meta:projectz":"projectz compile","our:release":"npm run our:release:prepare && npm run our:release:check-changelog && npm run our:release:check-dirty && npm run our:release:tag && npm run our:release:push","our:release:check-changelog":"cat ./HISTORY.md | grep \"v$npm_package_version\" || (printf '%s\n' \"add a changelog entry for v$npm_package_version\" && exit -1)","our:release:check-dirty":"git diff --exit-code","our:release:prepare":"npm run our:clean && npm run our:compile && npm run our:test && npm run our:meta","our:release:push":"git push origin && git push origin --tags","our:release:tag":"export MESSAGE=$(cat ./HISTORY.md | sed -n \"/## v$npm_package_version/,/##/p\" | sed 's/## //' | awk 'NR>1{print buf}{buf = $0}') && test \"$MESSAGE\" || (printf '%s\n' 'proper changelog entry not found' && exit -1) && git tag \"v$npm_package_version\" -am \"$MESSAGE\"","our:setup":"npm run our:setup:install","our:setup:install":"npm install","our:test":"npm run our:verify && npm test","our:verify":"npm run our:verify:directory && npm run our:verify:eslint && npm run our:verify:prettier","our:verify:directory":"valid-directory","our:verify:eslint":"eslint --fix --ignore-pattern '**/*.d.ts' --ignore-pattern '**/vendor/' --ignore-pattern '**/node_modules/' --ext .mjs,.js,.jsx,.ts,.tsx ./source","our:verify:prettier":"prettier --write .","test":"node ./test.cjs"},"eslintConfig":{"extends":["bevry"]},"prettier":{"semi":false,"singleQuote":true,"trailingComma":"es5"},"boundation":{"sourceModule":false},"_id":"@bevry/pluginloader@5.0.0-next.1700857352.1427218d71ab9a6930defc6e69b89765140ec68b","readme":"<!-- TITLE/ -->\n\n<h1>@bevry/pluginloader</h1>\n\n<!-- /TITLE -->\n\n\n<!-- BADGES/ -->\n\n<span class=\"badge-githubworkflow\"><a href=\"https://github.com/bevry/pluginloader/actions?query=workflow%3Abevry\" title=\"View the status of this project's GitHub Workflow: bevry\"><img src=\"https://github.com/bevry/pluginloader/workflows/bevry/badge.svg\" alt=\"Status of the GitHub Workflow: bevry\" /></a></span>\n<span class=\"badge-npmversion\"><a href=\"https://npmjs.org/package/@bevry/pluginloader\" title=\"View this project on NPM\"><img src=\"https://img.shields.io/npm/v/@bevry/pluginloader.svg\" alt=\"NPM version\" /></a></span>\n<span class=\"badge-npmdownloads\"><a href=\"https://npmjs.org/package/@bevry/pluginloader\" title=\"View this project on NPM\"><img src=\"https://img.shields.io/npm/dm/@bevry/pluginloader.svg\" alt=\"NPM downloads\" /></a></span>\n<br class=\"badge-separator\" />\n<span class=\"badge-githubsponsors\"><a href=\"https://github.com/sponsors/balupton\" title=\"Donate to this project using GitHub Sponsors\"><img src=\"https://img.shields.io/badge/github-donate-yellow.svg\" alt=\"GitHub Sponsors donate button\" /></a></span>\n<span class=\"badge-thanksdev\"><a href=\"https://thanks.dev/u/gh/bevry\" title=\"Donate to this project using ThanksDev\"><img src=\"https://img.shields.io/badge/thanksdev-donate-yellow.svg\" alt=\"ThanksDev donate button\" /></a></span>\n<span class=\"badge-patreon\"><a href=\"https://patreon.com/bevry\" title=\"Donate to this project using Patreon\"><img src=\"https://img.shields.io/badge/patreon-donate-yellow.svg\" alt=\"Patreon donate button\" /></a></span>\n<span class=\"badge-liberapay\"><a href=\"https://liberapay.com/bevry\" title=\"Donate to this project using Liberapay\"><img src=\"https://img.shields.io/badge/liberapay-donate-yellow.svg\" alt=\"Liberapay donate button\" /></a></span>\n<span class=\"badge-buymeacoffee\"><a href=\"https://buymeacoffee.com/balupton\" title=\"Donate to this project using Buy Me A Coffee\"><img src=\"https://img.shields.io/badge/buy%20me%20a%20coffee-donate-yellow.svg\" alt=\"Buy Me A Coffee donate button\" /></a></span>\n<span class=\"badge-opencollective\"><a href=\"https://opencollective.com/bevry\" title=\"Donate to this project using Open Collective\"><img src=\"https://img.shields.io/badge/open%20collective-donate-yellow.svg\" alt=\"Open Collective donate button\" /></a></span>\n<span class=\"badge-crypto\"><a href=\"https://bevry.me/crypto\" title=\"Donate to this project using Cryptocurrency\"><img src=\"https://img.shields.io/badge/crypto-donate-yellow.svg\" alt=\"crypto donate button\" /></a></span>\n<span class=\"badge-paypal\"><a href=\"https://bevry.me/paypal\" title=\"Donate to this project using Paypal\"><img src=\"https://img.shields.io/badge/paypal-donate-yellow.svg\" alt=\"PayPal donate button\" /></a></span>\n<br class=\"badge-separator\" />\n<span class=\"badge-discord\"><a href=\"https://discord.gg/nQuXddV7VP\" title=\"Join this project's community on Discord\"><img src=\"https://img.shields.io/discord/1147436445783560193?logo=discord&amp;label=discord\" alt=\"Discord server badge\" /></a></span>\n<span class=\"badge-twitch\"><a href=\"https://www.twitch.tv/balupton\" title=\"Join this project's community on Twitch\"><img src=\"https://img.shields.io/twitch/status/balupton?logo=twitch\" alt=\"Twitch community badge\" /></a></span>\n\n<!-- /BADGES -->\n\n\n<!-- DESCRIPTION/ -->\n\nA class for loading, verifying, and creating plugins. Used by DocPad for years.\n\n<!-- /DESCRIPTION -->\n\n\n## Usage\n\n[Complete API Documentation.](http://master.pluginloader.bevry.surge.sh/docs/)\n\n### Basics\n\nCreate your project:\n\n1. `mkdir my-project`\n1. `cd my-project`\n\nCreate your plugin:\n\n1. `mkdir myplugin`\n1. `cd myplugin`\n1. `npm init`\n1. `index.js` to:\n\n    ```javascript\n    module.exports = function (BasePlugin) {\n        return class MyPlugin extends BasePlugin {\n            constructor(...args) {\n                super(...args)\n                console.log('hello from my plugin')\n            }\n        }\n    }\n    ```\n\n1. `cd ..`\n\nCreate your plugin loader:\n\n1. `mkdir myapp`\n1. `cd myapp`\n1. `npm init`\n1. `index.js` to:\n\n    ```javascript\n    import PluginLoader from '@bevry/pluginloader'\n\n    class BasePlugin {\n        constructor() {\n            console.log('hello from base plugin')\n        }\n    }\n\n    const pluginLoader = new PluginLoader({\n        BasePlugin,\n        pluginPath: require('path').resolve(__dirname, '..', 'myplugin'),\n    })\n    ```\n\n1. `cd ..`\n\nRun the project:\n\n1. `node myapp/index.js`\n\n### Ecosystem\n\n-   [pluginclerk](https://github.com/bevry/pluginclerk) a project for fetching compatible plugins from the npm registry\n-   [docpad-baseplugin](https://github.com/docpad/docpad-baseplugin) the BasePlugin class that DocPad uses\n-   [docpad-plugintester](https://github.com/docpad/docpad-plugintester) testing helpers for DocPad plugins\n\n<!-- INSTALL/ -->\n\n<h2>Install</h2>\n\n<a href=\"https://npmjs.com\" title=\"npm is a package manager for javascript\"><h3>npm</h3></a>\n<ul>\n<li>Install: <code>npm install --save @bevry/pluginloader</code></li>\n<li>Import: <code>import * as pkg from ('@bevry/pluginloader')</code></li>\n<li>Require: <code>const pkg = require('@bevry/pluginloader')</code></li>\n</ul>\n\n<a href=\"https://deno.land\" title=\"Deno is a secure runtime for JavaScript and TypeScript, it is an alternative for Node.js\"><h3>Deno</h3></a>\n\n``` typescript\nimport * as pkg from 'https://unpkg.com/@bevry/pluginloader@^5.0.0/edition-deno/index.ts'\n```\n\n<h3><a href=\"https://editions.bevry.me\" title=\"Editions are the best way to produce and consume packages you care about.\">Editions</a></h3>\n\n<p>This package is published with the following editions:</p>\n\n<ul><li><code>@bevry/pluginloader</code> aliases <code>@bevry/pluginloader/index.cjs</code> which uses the <a href=\"https://github.com/bevry/editions\" title=\"You can use the Editions Autoloader to autoload the appropriate edition for your consumers environment\">Editions Autoloader</a> to automatically select the correct edition for the consumer's environment</li>\n<li><code>@bevry/pluginloader/source/index.ts</code> is <a href=\"https://www.typescriptlang.org/\" title=\"TypeScript is a typed superset of JavaScript that compiles to plain JavaScript. \">TypeScript</a> source code with <a href=\"https://babeljs.io/docs/learn-es2015/#modules\" title=\"ECMAScript Modules\">Import</a> for modules</li>\n<li><code>@bevry/pluginloader/edition-es2022/index.js</code> is <a href=\"https://www.typescriptlang.org/\" title=\"TypeScript is a typed superset of JavaScript that compiles to plain JavaScript. \">TypeScript</a> compiled against ES2022 for <a href=\"https://nodejs.org\" title=\"Node.js is a JavaScript runtime built on Chrome's V8 JavaScript engine\">Node.js</a> 12 || 14 || 16 || 18 || 20 || 21 with <a href=\"https://nodejs.org/dist/latest-v5.x/docs/api/modules.html\" title=\"Node/CJS Modules\">Require</a> for modules</li>\n<li><code>@bevry/pluginloader/edition-es2021/index.js</code> is <a href=\"https://www.typescriptlang.org/\" title=\"TypeScript is a typed superset of JavaScript that compiles to plain JavaScript. \">TypeScript</a> compiled against ES2021 for <a href=\"https://nodejs.org\" title=\"Node.js is a JavaScript runtime built on Chrome's V8 JavaScript engine\">Node.js</a> 6 || 8 || 10 || 12 || 14 || 16 || 18 || 20 || 21 with <a href=\"https://nodejs.org/dist/latest-v5.x/docs/api/modules.html\" title=\"Node/CJS Modules\">Require</a> for modules</li>\n<li><code>@bevry/pluginloader/edition-types/index.d.ts</code> is <a href=\"https://www.typescriptlang.org/\" title=\"TypeScript is a typed superset of JavaScript that compiles to plain JavaScript. \">TypeScript</a> compiled Types with <a href=\"https://babeljs.io/docs/learn-es2015/#modules\" title=\"ECMAScript Modules\">Import</a> for modules</li></ul>\n\n<!-- /INSTALL -->\n\n\n<!-- HISTORY/ -->\n\n<h2>History</h2>\n\n<a href=\"https://github.com/bevry/pluginloader/blob/master/HISTORY.md#files\">Discover the release history by heading on over to the <code>HISTORY.md</code> file.</a>\n\n<!-- /HISTORY -->\n\n\n<!-- CONTRIBUTE/ -->\n\n<h2>Contribute</h2>\n\n<a href=\"https://github.com/bevry/pluginloader/blob/master/CONTRIBUTING.md#files\">Discover how you can contribute by heading on over to the <code>CONTRIBUTING.md</code> file.</a>\n\n<!-- /CONTRIBUTE -->\n\n\n<!-- BACKERS/ -->\n\n<h2>Backers</h2>\n\n<h3>Maintainers</h3>\n\nThese amazing people are maintaining this project:\n\n<ul><li><a href=\"https://balupton.com\">Benjamin Lupton</a> — <a href=\"https://github.com/bevry/pluginloader/commits?author=balupton\" title=\"View the GitHub contributions of Benjamin Lupton on repository bevry/pluginloader\">view contributions</a></li></ul>\n\n<h3>Sponsors</h3>\n\nNo sponsors yet! Will you be the first?\n\n<span class=\"badge-githubsponsors\"><a href=\"https://github.com/sponsors/balupton\" title=\"Donate to this project using GitHub Sponsors\"><img src=\"https://img.shields.io/badge/github-donate-yellow.svg\" alt=\"GitHub Sponsors donate button\" /></a></span>\n<span class=\"badge-thanksdev\"><a href=\"https://thanks.dev/u/gh/bevry\" title=\"Donate to this project using ThanksDev\"><img src=\"https://img.shields.io/badge/thanksdev-donate-yellow.svg\" alt=\"ThanksDev donate button\" /></a></span>\n<span class=\"badge-patreon\"><a href=\"https://patreon.com/bevry\" title=\"Donate to this project using Patreon\"><img src=\"https://img.shields.io/badge/patreon-donate-yellow.svg\" alt=\"Patreon donate button\" /></a></span>\n<span class=\"badge-liberapay\"><a href=\"https://liberapay.com/bevry\" title=\"Donate to this project using Liberapay\"><img src=\"https://img.shields.io/badge/liberapay-donate-yellow.svg\" alt=\"Liberapay donate button\" /></a></span>\n<span class=\"badge-buymeacoffee\"><a href=\"https://buymeacoffee.com/balupton\" title=\"Donate to this project using Buy Me A Coffee\"><img src=\"https://img.shields.io/badge/buy%20me%20a%20coffee-donate-yellow.svg\" alt=\"Buy Me A Coffee donate button\" /></a></span>\n<span class=\"badge-opencollective\"><a href=\"https://opencollective.com/bevry\" title=\"Donate to this project using Open Collective\"><img src=\"https://img.shields.io/badge/open%20collective-donate-yellow.svg\" alt=\"Open Collective donate button\" /></a></span>\n<span class=\"badge-crypto\"><a href=\"https://bevry.me/crypto\" title=\"Donate to this project using Cryptocurrency\"><img src=\"https://img.shields.io/badge/crypto-donate-yellow.svg\" alt=\"crypto donate button\" /></a></span>\n<span class=\"badge-paypal\"><a href=\"https://bevry.me/paypal\" title=\"Donate to this project using Paypal\"><img src=\"https://img.shields.io/badge/paypal-donate-yellow.svg\" alt=\"PayPal donate button\" /></a></span>\n\n<h3>Contributors</h3>\n\nThese amazing people have contributed code to this project:\n\n<ul><li><a href=\"https://balupton.com\">Benjamin Lupton</a> — <a href=\"https://github.com/bevry/pluginloader/commits?author=balupton\" title=\"View the GitHub contributions of Benjamin Lupton on repository bevry/pluginloader\">view contributions</a></li></ul>\n\n<a href=\"https://github.com/bevry/pluginloader/blob/master/CONTRIBUTING.md#files\">Discover how you can contribute by heading on over to the <code>CONTRIBUTING.md</code> file.</a>\n\n<!-- /BACKERS -->\n\n\n<!-- LICENSE/ -->\n\n<h2>License</h2>\n\nUnless stated otherwise all works are:\n\n<ul><li>Copyright &copy; 2018+ <a href=\"https://balupton.com\">Benjamin Lupton</a></li></ul>\n\nand licensed under:\n\n<ul><li><a href=\"http://spdx.org/licenses/Artistic-2.0.html\">Artistic License 2.0</a></li></ul>\n\n<!-- /LICENSE -->\n","readmeFilename":"README.md","gitHead":"1427218d71ab9a6930defc6e69b89765140ec68b","_nodeVersion":"20.9.0","_npmVersion":"10.1.0","dist":{"integrity":"sha512-cxVyc51D3ZITv+GIlHE5K+LB06GaQJlBB/wa1jiaNpFZRWdTHM2JNXY6FRA6EyHmFm97k9B3zT3M9scQs78cFw==","shasum":"d1293fecbfb465f4f0b1a5c718380c5fd552e386","tarball":"https://registry.npmjs.org/@bevry/pluginloader/-/pluginloader-5.0.0-next.1700857352.1427218d71ab9a6930defc6e69b89765140ec68b.tgz","fileCount":14,"unpackedSize":65162,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCkuzV/BZeUt+8s5HUbiIBCs2rZtFEZY7BLuNvThP5LKwIgRS//+A5h3lkJmxiikmlYGT4DrEz4WZCFsppDVxvSFG0="}]},"_npmUser":{"name":"bevryme","email":"us@bevry.me"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/pluginloader_5.0.0-next.1700857352.1427218d71ab9a6930defc6e69b89765140ec68b_1700857353551_0.7926011218689568"},"_hasShrinkwrap":false},"5.0.0":{"name":"@bevry/pluginloader","version":"5.0.0","description":"A class for loading, verifying, and creating plugins. Used by DocPad for years.","homepage":"https://github.com/bevry/pluginloader","license":"Artistic-2.0","keywords":["bevry","deno","deno-edition","deno-entry","denoland","docpad","es2021","es2022","loader","node","plugin","plugins","typed","types","typescript"],"badges":{"list":["githubworkflow","npmversion","npmdownloads","---","githubsponsors","thanksdev","patreon","liberapay","buymeacoffee","opencollective","crypto","paypal","---","discord","twitch"],"config":{"githubWorkflow":"bevry","githubSponsorsUsername":"balupton","thanksdevGithubUsername":"bevry","buymeacoffeeUsername":"balupton","cryptoURL":"https://bevry.me/crypto","flattrUsername":"balupton","liberapayUsername":"bevry","opencollectiveUsername":"bevry","patreonUsername":"bevry","paypalURL":"https://bevry.me/paypal","wishlistURL":"https://bevry.me/wishlist","discordServerID":"1147436445783560193","discordServerInvite":"nQuXddV7VP","twitchUsername":"balupton","githubUsername":"bevry","githubRepository":"pluginloader","githubSlug":"bevry/pluginloader","npmPackageName":"@bevry/pluginloader"}},"funding":"https://bevry.me/fund","author":{"name":"2018+ Benjamin Lupton","email":"b@lupton.cc","url":"https://balupton.com"},"maintainers":[{"name":"bevryme","email":"us@bevry.me"}],"contributors":[{"name":"Benjamin Lupton","email":"b@lupton.cc","url":"https://github.com/balupton"}],"bugs":{"url":"https://github.com/bevry/pluginloader/issues"},"repository":{"type":"git","url":"git+https://github.com/bevry/pluginloader.git"},"engines":{"node":">=6"},"editions":[{"description":"TypeScript source code with Import for modules","directory":"source","entry":"index.ts","tags":["source","typescript","import"],"engines":false},{"description":"TypeScript compiled against ES2022 for Node.js 12 || 14 || 16 || 18 || 20 || 21 with Require for modules","directory":"edition-es2022","entry":"index.js","tags":["compiled","javascript","es2022","require"],"engines":{"node":"12 || 14 || 16 || 18 || 20 || 21","browsers":false}},{"description":"TypeScript compiled against ES2021 for Node.js 6 || 8 || 10 || 12 || 14 || 16 || 18 || 20 || 21 with Require for modules","directory":"edition-es2021","entry":"index.js","tags":["compiled","javascript","es2021","require"],"engines":{"node":"6 || 8 || 10 || 12 || 14 || 16 || 18 || 20 || 21","browsers":false}},{"description":"TypeScript compiled Types with Import for modules","directory":"edition-types","entry":"index.d.ts","tags":["compiled","types","import"],"engines":false}],"types":"edition-types/index.d.ts","type":"module","main":"index.cjs","deno":"edition-deno/index.ts","dependencies":{"editions":"^6.16.0","errlop":"^7.4.0","typechecker":"^8.5.0","version-range":"^4.7.0"},"devDependencies":{"@bevry/update-contributors":"^1.23.0","@types/node":"^20.10.0","@typescript-eslint/eslint-plugin":"^6.12.0","@typescript-eslint/parser":"^6.12.0","assert-helpers":"^11.6.0","eslint":"^8.54.0","eslint-config-bevry":"^5.2.0","eslint-config-prettier":"^9.0.0","eslint-plugin-prettier":"^5.0.1","filedirname":"^3.1.0","kava":"^7.4.0","prettier":"^3.1.0","projectz":"^3.3.0","surge":"^0.23.1","typedoc":"^0.25.3","typescript":"5.2.2","valid-directory":"^4.5.0"},"scripts":{"our:clean":"rm -rf ./docs ./edition* ./es2015 ./es5 ./out ./.next","our:compile":"npm run our:compile:edition-es2021 && npm run our:compile:edition-es2022 && npm run our:compile:edition-types","our:compile:edition-es2021":"tsc --module commonjs --target ES2021 --outDir ./edition-es2021 --project tsconfig.json && ( test ! -d edition-es2021/source || ( mv edition-es2021/source edition-temp && rm -rf edition-es2021 && mv edition-temp edition-es2021 ) ) && printf '%s' '{\"type\": \"commonjs\"}' > edition-es2021/package.json","our:compile:edition-es2022":"tsc --module commonjs --target ES2022 --outDir ./edition-es2022 --project tsconfig.json && ( test ! -d edition-es2022/source || ( mv edition-es2022/source edition-temp && rm -rf edition-es2022 && mv edition-temp edition-es2022 ) ) && printf '%s' '{\"type\": \"commonjs\"}' > edition-es2022/package.json","our:compile:edition-types":"tsc --emitDeclarationOnly --declaration --declarationMap --declarationDir ./edition-types --project tsconfig.json && ( test ! -d edition-types/source || ( mv edition-types/source edition-temp && rm -rf edition-types && mv edition-temp edition-types ) )","our:deploy":"printf '%s\n' 'no need for this project'","our:meta":"npm run our:meta:contributors && npm run our:meta:docs && npm run our:meta:projectz","our:meta:contributors":"update-contributors","our:meta:docs":"npm run our:meta:docs:typedoc","our:meta:docs:typedoc":"rm -rf ./docs && typedoc --exclude '**/+(*test*|node_modules)' --excludeExternals --out ./docs ./source","our:meta:projectz":"projectz compile","our:release":"npm run our:release:prepare && npm run our:release:check-changelog && npm run our:release:check-dirty && npm run our:release:tag && npm run our:release:push","our:release:check-changelog":"cat ./HISTORY.md | grep \"v$npm_package_version\" || (printf '%s\n' \"add a changelog entry for v$npm_package_version\" && exit -1)","our:release:check-dirty":"git diff --exit-code","our:release:prepare":"npm run our:clean && npm run our:compile && npm run our:test && npm run our:meta","our:release:push":"git push origin && git push origin --tags","our:release:tag":"export MESSAGE=$(cat ./HISTORY.md | sed -n \"/## v$npm_package_version/,/##/p\" | sed 's/## //' | awk 'NR>1{print buf}{buf = $0}') && test \"$MESSAGE\" || (printf '%s\n' 'proper changelog entry not found' && exit -1) && git tag \"v$npm_package_version\" -am \"$MESSAGE\"","our:setup":"npm run our:setup:install","our:setup:install":"npm install","our:test":"npm run our:verify && npm test","our:verify":"npm run our:verify:directory && npm run our:verify:eslint && npm run our:verify:prettier","our:verify:directory":"valid-directory","our:verify:eslint":"eslint --fix --ignore-pattern '**/*.d.ts' --ignore-pattern '**/vendor/' --ignore-pattern '**/node_modules/' --ext .mjs,.js,.jsx,.ts,.tsx ./source","our:verify:prettier":"prettier --write .","test":"node ./test.cjs"},"eslintConfig":{"extends":["bevry"]},"prettier":{"semi":false,"singleQuote":true,"trailingComma":"es5"},"boundation":{"sourceModule":false},"_id":"@bevry/pluginloader@5.0.0","gitHead":"1427218d71ab9a6930defc6e69b89765140ec68b","_nodeVersion":"20.9.0","_npmVersion":"10.1.0","dist":{"integrity":"sha512-Vks71UPuoQdShXEHAlCNMIrTj3ZvQW/wyzVuTLAlUVxY1EVOwt2TK8FNYClaymI2TMO8j2oZ4aDyxpbcrs25SQ==","shasum":"245c1c57990677b5da7c1b764f75f8f6bce139e8","tarball":"https://registry.npmjs.org/@bevry/pluginloader/-/pluginloader-5.0.0.tgz","fileCount":14,"unpackedSize":65104,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDWLcS6JqB4osr4B/racziXUf23Q0aAzVsCa4GgC1javwIgbKa6SY+pWDULOr5eoYlYJzTKkRhhKh7qPwFIzLXrY2w="}]},"_npmUser":{"name":"bevryme","email":"us@bevry.me"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/pluginloader_5.0.0_1700857357426_0.6325737027104319"},"_hasShrinkwrap":false},"5.1.0-next.1701824349.c47ae6463b8607877cbc3389067dda935344cd3f":{"name":"@bevry/pluginloader","version":"5.1.0-next.1701824349.c47ae6463b8607877cbc3389067dda935344cd3f","description":"A class for loading, verifying, and creating plugins. Used by DocPad for years.","homepage":"https://github.com/bevry/pluginloader","license":"Artistic-2.0","keywords":["bevry","deno","deno-edition","deno-entry","denoland","docpad","es2016","es2022","loader","node","plugin","plugins","typed","types","typescript"],"badges":{"list":["githubworkflow","npmversion","npmdownloads","---","githubsponsors","thanksdev","patreon","liberapay","buymeacoffee","opencollective","crypto","paypal","---","discord","twitch"],"config":{"githubWorkflow":"bevry","githubSponsorsUsername":"balupton","thanksdevGithubUsername":"bevry","buymeacoffeeUsername":"balupton","cryptoURL":"https://bevry.me/crypto","flattrUsername":"balupton","liberapayUsername":"bevry","opencollectiveUsername":"bevry","patreonUsername":"bevry","paypalURL":"https://bevry.me/paypal","wishlistURL":"https://bevry.me/wishlist","discordServerID":"1147436445783560193","discordServerInvite":"nQuXddV7VP","twitchUsername":"balupton","githubUsername":"bevry","githubRepository":"pluginloader","githubSlug":"bevry/pluginloader","npmPackageName":"@bevry/pluginloader"}},"funding":"https://bevry.me/fund","author":{"name":"2018+ Benjamin Lupton","email":"b@lupton.cc","url":"https://balupton.com"},"maintainers":[{"name":"bevryme","email":"us@bevry.me"}],"contributors":[{"name":"Benjamin Lupton","email":"b@lupton.cc","url":"https://github.com/balupton"}],"bugs":{"url":"https://github.com/bevry/pluginloader/issues"},"repository":{"type":"git","url":"git+https://github.com/bevry/pluginloader.git"},"engines":{"node":">=6"},"editions":[{"description":"TypeScript source code with Import for modules","directory":"source","entry":"index.ts","tags":["source","typescript","import"],"engines":false},{"description":"TypeScript compiled against ES2022 for Node.js 12 || 14 || 16 || 18 || 20 || 21 with Require for modules","directory":"edition-es2022","entry":"index.js","tags":["compiled","javascript","es2022","require"],"engines":{"node":"12 || 14 || 16 || 18 || 20 || 21","browsers":false}},{"description":"TypeScript compiled against ES2016 for Node.js 6 || 8 || 10 || 12 || 14 || 16 || 18 || 20 || 21 with Require for modules","directory":"edition-es2016","entry":"index.js","tags":["compiled","javascript","es2016","require"],"engines":{"node":"6 || 8 || 10 || 12 || 14 || 16 || 18 || 20 || 21","browsers":false}},{"description":"TypeScript compiled Types with Import for modules","directory":"edition-types","entry":"index.d.ts","tags":["compiled","types","import"],"engines":false}],"types":"edition-types/index.d.ts","type":"module","main":"index.cjs","deno":"edition-deno/index.ts","dependencies":{"editions":"^6.19.0","errlop":"^8.2.0","typechecker":"^9.2.0","version-range":"^4.11.0"},"devDependencies":{"@bevry/update-contributors":"^1.23.0","@types/node":"^20.10.3","@typescript-eslint/eslint-plugin":"^6.13.2","@typescript-eslint/parser":"^6.13.2","assert-helpers":"^11.9.0","eslint":"^8.55.0","eslint-config-bevry":"^5.3.0","eslint-config-prettier":"^9.1.0","eslint-plugin-prettier":"^5.0.1","filedirname":"^3.2.0","kava":"^7.5.0","prettier":"^3.1.0","projectz":"^3.4.0","typedoc":"^0.25.4","typescript":"5.3.2","valid-directory":"^4.6.0"},"scripts":{"our:clean":"rm -rf ./docs ./edition* ./es2015 ./es5 ./out ./.next","our:compile":"npm run our:compile:edition-es2016 && npm run our:compile:edition-es2022 && npm run our:compile:edition-types","our:compile:edition-es2016":"tsc --module commonjs --target ES2016 --outDir ./edition-es2016 --project tsconfig.json && ( test ! -d edition-es2016/source || ( mv edition-es2016/source edition-temp && rm -rf edition-es2016 && mv edition-temp edition-es2016 ) ) && printf '%s' '{\"type\": \"commonjs\"}' > edition-es2016/package.json","our:compile:edition-es2022":"tsc --module commonjs --target ES2022 --outDir ./edition-es2022 --project tsconfig.json && ( test ! -d edition-es2022/source || ( mv edition-es2022/source edition-temp && rm -rf edition-es2022 && mv edition-temp edition-es2022 ) ) && printf '%s' '{\"type\": \"commonjs\"}' > edition-es2022/package.json","our:compile:edition-types":"tsc --emitDeclarationOnly --declaration --declarationMap --declarationDir ./edition-types --project tsconfig.json && ( test ! -d edition-types/source || ( mv edition-types/source edition-temp && rm -rf edition-types && mv edition-temp edition-types ) )","our:deploy":"printf '%s\n' 'no need for this project'","our:meta":"npm run our:meta:contributors && npm run our:meta:docs && npm run our:meta:projectz","our:meta:contributors":"update-contributors","our:meta:docs":"npm run our:meta:docs:typedoc","our:meta:docs:typedoc":"rm -rf ./docs && typedoc --exclude '**/+(*test*|node_modules)' --excludeExternals --out ./docs ./source","our:meta:projectz":"projectz compile","our:release":"npm run our:release:prepare && npm run our:release:check-changelog && npm run our:release:check-dirty && npm run our:release:tag && npm run our:release:push","our:release:check-changelog":"cat ./HISTORY.md | grep \"v$npm_package_version\" || (printf '%s\n' \"add a changelog entry for v$npm_package_version\" && exit -1)","our:release:check-dirty":"git diff --exit-code","our:release:prepare":"npm run our:clean && npm run our:compile && npm run our:test && npm run our:meta","our:release:push":"git push origin && git push origin --tags","our:release:tag":"export MESSAGE=$(cat ./HISTORY.md | sed -n \"/## v$npm_package_version/,/##/p\" | sed 's/## //' | awk 'NR>1{print buf}{buf = $0}') && test \"$MESSAGE\" || (printf '%s\n' 'proper changelog entry not found' && exit -1) && git tag \"v$npm_package_version\" -am \"$MESSAGE\"","our:setup":"npm run our:setup:install","our:setup:install":"npm install","our:test":"npm run our:verify && npm test","our:verify":"npm run our:verify:directory && npm run our:verify:eslint && npm run our:verify:prettier","our:verify:directory":"valid-directory","our:verify:eslint":"eslint --fix --ignore-pattern '**/*.d.ts' --ignore-pattern '**/vendor/' --ignore-pattern '**/node_modules/' --ext .mjs,.js,.jsx,.ts,.tsx ./source","our:verify:prettier":"prettier --write .","test":"node ./test.cjs"},"eslintConfig":{"extends":["bevry"]},"prettier":{"semi":false,"singleQuote":true,"trailingComma":"all","endOfLine":"lf"},"boundation":{"sourceModule":false},"_id":"@bevry/pluginloader@5.1.0-next.1701824349.c47ae6463b8607877cbc3389067dda935344cd3f","readme":"<!-- TITLE/ -->\n\n<h1>@bevry/pluginloader</h1>\n\n<!-- /TITLE -->\n\n\n<!-- BADGES/ -->\n\n<span class=\"badge-githubworkflow\"><a href=\"https://github.com/bevry/pluginloader/actions?query=workflow%3Abevry\" title=\"View the status of this project's GitHub Workflow: bevry\"><img src=\"https://github.com/bevry/pluginloader/workflows/bevry/badge.svg\" alt=\"Status of the GitHub Workflow: bevry\" /></a></span>\n<span class=\"badge-npmversion\"><a href=\"https://npmjs.org/package/@bevry/pluginloader\" title=\"View this project on NPM\"><img src=\"https://img.shields.io/npm/v/@bevry/pluginloader.svg\" alt=\"NPM version\" /></a></span>\n<span class=\"badge-npmdownloads\"><a href=\"https://npmjs.org/package/@bevry/pluginloader\" title=\"View this project on NPM\"><img src=\"https://img.shields.io/npm/dm/@bevry/pluginloader.svg\" alt=\"NPM downloads\" /></a></span>\n<br class=\"badge-separator\" />\n<span class=\"badge-githubsponsors\"><a href=\"https://github.com/sponsors/balupton\" title=\"Donate to this project using GitHub Sponsors\"><img src=\"https://img.shields.io/badge/github-donate-yellow.svg\" alt=\"GitHub Sponsors donate button\" /></a></span>\n<span class=\"badge-thanksdev\"><a href=\"https://thanks.dev/u/gh/bevry\" title=\"Donate to this project using ThanksDev\"><img src=\"https://img.shields.io/badge/thanksdev-donate-yellow.svg\" alt=\"ThanksDev donate button\" /></a></span>\n<span class=\"badge-patreon\"><a href=\"https://patreon.com/bevry\" title=\"Donate to this project using Patreon\"><img src=\"https://img.shields.io/badge/patreon-donate-yellow.svg\" alt=\"Patreon donate button\" /></a></span>\n<span class=\"badge-liberapay\"><a href=\"https://liberapay.com/bevry\" title=\"Donate to this project using Liberapay\"><img src=\"https://img.shields.io/badge/liberapay-donate-yellow.svg\" alt=\"Liberapay donate button\" /></a></span>\n<span class=\"badge-buymeacoffee\"><a href=\"https://buymeacoffee.com/balupton\" title=\"Donate to this project using Buy Me A Coffee\"><img src=\"https://img.shields.io/badge/buy%20me%20a%20coffee-donate-yellow.svg\" alt=\"Buy Me A Coffee donate button\" /></a></span>\n<span class=\"badge-opencollective\"><a href=\"https://opencollective.com/bevry\" title=\"Donate to this project using Open Collective\"><img src=\"https://img.shields.io/badge/open%20collective-donate-yellow.svg\" alt=\"Open Collective donate button\" /></a></span>\n<span class=\"badge-crypto\"><a href=\"https://bevry.me/crypto\" title=\"Donate to this project using Cryptocurrency\"><img src=\"https://img.shields.io/badge/crypto-donate-yellow.svg\" alt=\"crypto donate button\" /></a></span>\n<span class=\"badge-paypal\"><a href=\"https://bevry.me/paypal\" title=\"Donate to this project using Paypal\"><img src=\"https://img.shields.io/badge/paypal-donate-yellow.svg\" alt=\"PayPal donate button\" /></a></span>\n<br class=\"badge-separator\" />\n<span class=\"badge-discord\"><a href=\"https://discord.gg/nQuXddV7VP\" title=\"Join this project's community on Discord\"><img src=\"https://img.shields.io/discord/1147436445783560193?logo=discord&amp;label=discord\" alt=\"Discord server badge\" /></a></span>\n<span class=\"badge-twitch\"><a href=\"https://www.twitch.tv/balupton\" title=\"Join this project's community on Twitch\"><img src=\"https://img.shields.io/twitch/status/balupton?logo=twitch\" alt=\"Twitch community badge\" /></a></span>\n\n<!-- /BADGES -->\n\n\n<!-- DESCRIPTION/ -->\n\nA class for loading, verifying, and creating plugins. Used by DocPad for years.\n\n<!-- /DESCRIPTION -->\n\n\n## Usage\n\n[Complete API Documentation.](http://master.pluginloader.bevry.surge.sh/docs/)\n\n### Basics\n\nCreate your project:\n\n1. `mkdir my-project`\n1. `cd my-project`\n\nCreate your plugin:\n\n1. `mkdir myplugin`\n1. `cd myplugin`\n1. `npm init`\n1. `index.js` to:\n\n    ```javascript\n    module.exports = function (BasePlugin) {\n        return class MyPlugin extends BasePlugin {\n            constructor(...args) {\n                super(...args)\n                console.log('hello from my plugin')\n            }\n        }\n    }\n    ```\n\n1. `cd ..`\n\nCreate your plugin loader:\n\n1. `mkdir myapp`\n1. `cd myapp`\n1. `npm init`\n1. `index.js` to:\n\n    ```javascript\n    import PluginLoader from '@bevry/pluginloader'\n\n    class BasePlugin {\n        constructor() {\n            console.log('hello from base plugin')\n        }\n    }\n\n    const pluginLoader = new PluginLoader({\n        BasePlugin,\n        pluginPath: require('path').resolve(__dirname, '..', 'myplugin'),\n    })\n    ```\n\n1. `cd ..`\n\nRun the project:\n\n1. `node myapp/index.js`\n\n### Ecosystem\n\n-   [pluginclerk](https://github.com/bevry/pluginclerk) a project for fetching compatible plugins from the npm registry\n-   [docpad-baseplugin](https://github.com/docpad/docpad-baseplugin) the BasePlugin class that DocPad uses\n-   [docpad-plugintester](https://github.com/docpad/docpad-plugintester) testing helpers for DocPad plugins\n\n<!-- INSTALL/ -->\n\n<h2>Install</h2>\n\n<a href=\"https://npmjs.com\" title=\"npm is a package manager for javascript\"><h3>npm</h3></a>\n<ul>\n<li>Install: <code>npm install --save @bevry/pluginloader</code></li>\n<li>Import: <code>import * as pkg from ('@bevry/pluginloader')</code></li>\n<li>Require: <code>const pkg = require('@bevry/pluginloader')</code></li>\n</ul>\n\n<a href=\"https://deno.land\" title=\"Deno is a secure runtime for JavaScript and TypeScript, it is an alternative for Node.js\"><h3>Deno</h3></a>\n\n``` typescript\nimport * as pkg from 'https://unpkg.com/@bevry/pluginloader@^5.1.0/edition-deno/index.ts'\n```\n\n<h3><a href=\"https://editions.bevry.me\" title=\"Editions are the best way to produce and consume packages you care about.\">Editions</a></h3>\n\n<p>This package is published with the following editions:</p>\n\n<ul><li><code>@bevry/pluginloader</code> aliases <code>@bevry/pluginloader/index.cjs</code> which uses the <a href=\"https://github.com/bevry/editions\" title=\"You can use the Editions Autoloader to autoload the appropriate edition for your consumers environment\">Editions Autoloader</a> to automatically select the correct edition for the consumer's environment</li>\n<li><code>@bevry/pluginloader/source/index.ts</code> is <a href=\"https://www.typescriptlang.org/\" title=\"TypeScript is a typed superset of JavaScript that compiles to plain JavaScript. \">TypeScript</a> source code with <a href=\"https://babeljs.io/docs/learn-es2015/#modules\" title=\"ECMAScript Modules\">Import</a> for modules</li>\n<li><code>@bevry/pluginloader/edition-es2022/index.js</code> is <a href=\"https://www.typescriptlang.org/\" title=\"TypeScript is a typed superset of JavaScript that compiles to plain JavaScript. \">TypeScript</a> compiled against ES2022 for <a href=\"https://nodejs.org\" title=\"Node.js is a JavaScript runtime built on Chrome's V8 JavaScript engine\">Node.js</a> 12 || 14 || 16 || 18 || 20 || 21 with <a href=\"https://nodejs.org/dist/latest-v5.x/docs/api/modules.html\" title=\"Node/CJS Modules\">Require</a> for modules</li>\n<li><code>@bevry/pluginloader/edition-es2016/index.js</code> is <a href=\"https://www.typescriptlang.org/\" title=\"TypeScript is a typed superset of JavaScript that compiles to plain JavaScript. \">TypeScript</a> compiled against <a href=\"https://en.wikipedia.org/wiki/ECMAScript#7th_Edition_-_ECMAScript_2016\" title=\"ECMAScript 2016\">ES2016</a> for <a href=\"https://nodejs.org\" title=\"Node.js is a JavaScript runtime built on Chrome's V8 JavaScript engine\">Node.js</a> 6 || 8 || 10 || 12 || 14 || 16 || 18 || 20 || 21 with <a href=\"https://nodejs.org/dist/latest-v5.x/docs/api/modules.html\" title=\"Node/CJS Modules\">Require</a> for modules</li>\n<li><code>@bevry/pluginloader/edition-types/index.d.ts</code> is <a href=\"https://www.typescriptlang.org/\" title=\"TypeScript is a typed superset of JavaScript that compiles to plain JavaScript. \">TypeScript</a> compiled Types with <a href=\"https://babeljs.io/docs/learn-es2015/#modules\" title=\"ECMAScript Modules\">Import</a> for modules</li></ul>\n\n<!-- /INSTALL -->\n\n\n<!-- HISTORY/ -->\n\n<h2>History</h2>\n\n<a href=\"https://github.com/bevry/pluginloader/blob/master/HISTORY.md#files\">Discover the release history by heading on over to the <code>HISTORY.md</code> file.</a>\n\n<!-- /HISTORY -->\n\n\n<!-- CONTRIBUTE/ -->\n\n<h2>Contribute</h2>\n\n<a href=\"https://github.com/bevry/pluginloader/blob/master/CONTRIBUTING.md#files\">Discover how you can contribute by heading on over to the <code>CONTRIBUTING.md</code> file.</a>\n\n<!-- /CONTRIBUTE -->\n\n\n<!-- BACKERS/ -->\n\n<h2>Backers</h2>\n\n<h3>Maintainers</h3>\n\nThese amazing people are maintaining this project:\n\n<ul><li><a href=\"https://balupton.com\">Benjamin Lupton</a> — <a href=\"https://github.com/bevry/pluginloader/commits?author=balupton\" title=\"View the GitHub contributions of Benjamin Lupton on repository bevry/pluginloader\">view contributions</a></li></ul>\n\n<h3>Sponsors</h3>\n\nNo sponsors yet! Will you be the first?\n\n<span class=\"badge-githubsponsors\"><a href=\"https://github.com/sponsors/balupton\" title=\"Donate to this project using GitHub Sponsors\"><img src=\"https://img.shields.io/badge/github-donate-yellow.svg\" alt=\"GitHub Sponsors donate button\" /></a></span>\n<span class=\"badge-thanksdev\"><a href=\"https://thanks.dev/u/gh/bevry\" title=\"Donate to this project using ThanksDev\"><img src=\"https://img.shields.io/badge/thanksdev-donate-yellow.svg\" alt=\"ThanksDev donate button\" /></a></span>\n<span class=\"badge-patreon\"><a href=\"https://patreon.com/bevry\" title=\"Donate to this project using Patreon\"><img src=\"https://img.shields.io/badge/patreon-donate-yellow.svg\" alt=\"Patreon donate button\" /></a></span>\n<span class=\"badge-liberapay\"><a href=\"https://liberapay.com/bevry\" title=\"Donate to this project using Liberapay\"><img src=\"https://img.shields.io/badge/liberapay-donate-yellow.svg\" alt=\"Liberapay donate button\" /></a></span>\n<span class=\"badge-buymeacoffee\"><a href=\"https://buymeacoffee.com/balupton\" title=\"Donate to this project using Buy Me A Coffee\"><img src=\"https://img.shields.io/badge/buy%20me%20a%20coffee-donate-yellow.svg\" alt=\"Buy Me A Coffee donate button\" /></a></span>\n<span class=\"badge-opencollective\"><a href=\"https://opencollective.com/bevry\" title=\"Donate to this project using Open Collective\"><img src=\"https://img.shields.io/badge/open%20collective-donate-yellow.svg\" alt=\"Open Collective donate button\" /></a></span>\n<span class=\"badge-crypto\"><a href=\"https://bevry.me/crypto\" title=\"Donate to this project using Cryptocurrency\"><img src=\"https://img.shields.io/badge/crypto-donate-yellow.svg\" alt=\"crypto donate button\" /></a></span>\n<span class=\"badge-paypal\"><a href=\"https://bevry.me/paypal\" title=\"Donate to this project using Paypal\"><img src=\"https://img.shields.io/badge/paypal-donate-yellow.svg\" alt=\"PayPal donate button\" /></a></span>\n\n<h3>Contributors</h3>\n\nThese amazing people have contributed code to this project:\n\n<ul><li><a href=\"https://balupton.com\">Benjamin Lupton</a> — <a href=\"https://github.com/bevry/pluginloader/commits?author=balupton\" title=\"View the GitHub contributions of Benjamin Lupton on repository bevry/pluginloader\">view contributions</a></li></ul>\n\n<a href=\"https://github.com/bevry/pluginloader/blob/master/CONTRIBUTING.md#files\">Discover how you can contribute by heading on over to the <code>CONTRIBUTING.md</code> file.</a>\n\n<!-- /BACKERS -->\n\n\n<!-- LICENSE/ -->\n\n<h2>License</h2>\n\nUnless stated otherwise all works are:\n\n<ul><li>Copyright &copy; 2018+ <a href=\"https://balupton.com\">Benjamin Lupton</a></li></ul>\n\nand licensed under:\n\n<ul><li><a href=\"http://spdx.org/licenses/Artistic-2.0.html\">Artistic License 2.0</a></li></ul>\n\n<!-- /LICENSE -->\n","readmeFilename":"README.md","gitHead":"c47ae6463b8607877cbc3389067dda935344cd3f","_nodeVersion":"20.10.0","_npmVersion":"10.2.3","dist":{"integrity":"sha512-y4+ImmgFRbSJtMdOv8gksjlCF/8XeNMWRDRp6725z5oGtCTN34o2l2Ycq+3v4LpmchSSgnp6kK7u8ikkVYsPrQ==","shasum":"ed8f28acb986c7fb55188de6e0b4db3e5b1cc316","tarball":"https://registry.npmjs.org/@bevry/pluginloader/-/pluginloader-5.1.0-next.1701824349.c47ae6463b8607877cbc3389067dda935344cd3f.tgz","fileCount":14,"unpackedSize":65263,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICUwiLaPjkLqm8s2kHWJcULl++0TPgDbIMll+p6FLQTdAiEAsAIILixSwQrFk/ryFqTLuHc2yfhknLpZY5gmukgosw8="}]},"_npmUser":{"name":"bevryme","email":"us@bevry.me"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/pluginloader_5.1.0-next.1701824349.c47ae6463b8607877cbc3389067dda935344cd3f_1701824351274_0.7746206551409649"},"_hasShrinkwrap":false},"5.1.0":{"name":"@bevry/pluginloader","version":"5.1.0","description":"A class for loading, verifying, and creating plugins. Used by DocPad for years.","homepage":"https://github.com/bevry/pluginloader","license":"Artistic-2.0","keywords":["bevry","deno","deno-edition","deno-entry","denoland","docpad","es2016","es2022","loader","node","plugin","plugins","typed","types","typescript"],"badges":{"list":["githubworkflow","npmversion","npmdownloads","---","githubsponsors","thanksdev","patreon","liberapay","buymeacoffee","opencollective","crypto","paypal","---","discord","twitch"],"config":{"githubWorkflow":"bevry","githubSponsorsUsername":"balupton","thanksdevGithubUsername":"bevry","buymeacoffeeUsername":"balupton","cryptoURL":"https://bevry.me/crypto","flattrUsername":"balupton","liberapayUsername":"bevry","opencollectiveUsername":"bevry","patreonUsername":"bevry","paypalURL":"https://bevry.me/paypal","wishlistURL":"https://bevry.me/wishlist","discordServerID":"1147436445783560193","discordServerInvite":"nQuXddV7VP","twitchUsername":"balupton","githubUsername":"bevry","githubRepository":"pluginloader","githubSlug":"bevry/pluginloader","npmPackageName":"@bevry/pluginloader"}},"funding":"https://bevry.me/fund","author":{"name":"2018+ Benjamin Lupton","email":"b@lupton.cc","url":"https://balupton.com"},"maintainers":[{"name":"bevryme","email":"us@bevry.me"}],"contributors":[{"name":"Benjamin Lupton","email":"b@lupton.cc","url":"https://github.com/balupton"}],"bugs":{"url":"https://github.com/bevry/pluginloader/issues"},"repository":{"type":"git","url":"git+https://github.com/bevry/pluginloader.git"},"engines":{"node":">=6"},"editions":[{"description":"TypeScript source code with Import for modules","directory":"source","entry":"index.ts","tags":["source","typescript","import"],"engines":false},{"description":"TypeScript compiled against ES2022 for Node.js 12 || 14 || 16 || 18 || 20 || 21 with Require for modules","directory":"edition-es2022","entry":"index.js","tags":["compiled","javascript","es2022","require"],"engines":{"node":"12 || 14 || 16 || 18 || 20 || 21","browsers":false}},{"description":"TypeScript compiled against ES2016 for Node.js 6 || 8 || 10 || 12 || 14 || 16 || 18 || 20 || 21 with Require for modules","directory":"edition-es2016","entry":"index.js","tags":["compiled","javascript","es2016","require"],"engines":{"node":"6 || 8 || 10 || 12 || 14 || 16 || 18 || 20 || 21","browsers":false}},{"description":"TypeScript compiled Types with Import for modules","directory":"edition-types","entry":"index.d.ts","tags":["compiled","types","import"],"engines":false}],"types":"edition-types/index.d.ts","type":"module","main":"index.cjs","deno":"edition-deno/index.ts","dependencies":{"editions":"^6.19.0","errlop":"^8.2.0","typechecker":"^9.2.0","version-range":"^4.11.0"},"devDependencies":{"@bevry/update-contributors":"^1.23.0","@types/node":"^20.10.3","@typescript-eslint/eslint-plugin":"^6.13.2","@typescript-eslint/parser":"^6.13.2","assert-helpers":"^11.9.0","eslint":"^8.55.0","eslint-config-bevry":"^5.3.0","eslint-config-prettier":"^9.1.0","eslint-plugin-prettier":"^5.0.1","filedirname":"^3.2.0","kava":"^7.5.0","prettier":"^3.1.0","projectz":"^3.4.0","typedoc":"^0.25.4","typescript":"5.3.2","valid-directory":"^4.6.0"},"scripts":{"our:clean":"rm -rf ./docs ./edition* ./es2015 ./es5 ./out ./.next","our:compile":"npm run our:compile:edition-es2016 && npm run our:compile:edition-es2022 && npm run our:compile:edition-types","our:compile:edition-es2016":"tsc --module commonjs --target ES2016 --outDir ./edition-es2016 --project tsconfig.json && ( test ! -d edition-es2016/source || ( mv edition-es2016/source edition-temp && rm -rf edition-es2016 && mv edition-temp edition-es2016 ) ) && printf '%s' '{\"type\": \"commonjs\"}' > edition-es2016/package.json","our:compile:edition-es2022":"tsc --module commonjs --target ES2022 --outDir ./edition-es2022 --project tsconfig.json && ( test ! -d edition-es2022/source || ( mv edition-es2022/source edition-temp && rm -rf edition-es2022 && mv edition-temp edition-es2022 ) ) && printf '%s' '{\"type\": \"commonjs\"}' > edition-es2022/package.json","our:compile:edition-types":"tsc --emitDeclarationOnly --declaration --declarationMap --declarationDir ./edition-types --project tsconfig.json && ( test ! -d edition-types/source || ( mv edition-types/source edition-temp && rm -rf edition-types && mv edition-temp edition-types ) )","our:deploy":"printf '%s\n' 'no need for this project'","our:meta":"npm run our:meta:contributors && npm run our:meta:docs && npm run our:meta:projectz","our:meta:contributors":"update-contributors","our:meta:docs":"npm run our:meta:docs:typedoc","our:meta:docs:typedoc":"rm -rf ./docs && typedoc --exclude '**/+(*test*|node_modules)' --excludeExternals --out ./docs ./source","our:meta:projectz":"projectz compile","our:release":"npm run our:release:prepare && npm run our:release:check-changelog && npm run our:release:check-dirty && npm run our:release:tag && npm run our:release:push","our:release:check-changelog":"cat ./HISTORY.md | grep \"v$npm_package_version\" || (printf '%s\n' \"add a changelog entry for v$npm_package_version\" && exit -1)","our:release:check-dirty":"git diff --exit-code","our:release:prepare":"npm run our:clean && npm run our:compile && npm run our:test && npm run our:meta","our:release:push":"git push origin && git push origin --tags","our:release:tag":"export MESSAGE=$(cat ./HISTORY.md | sed -n \"/## v$npm_package_version/,/##/p\" | sed 's/## //' | awk 'NR>1{print buf}{buf = $0}') && test \"$MESSAGE\" || (printf '%s\n' 'proper changelog entry not found' && exit -1) && git tag \"v$npm_package_version\" -am \"$MESSAGE\"","our:setup":"npm run our:setup:install","our:setup:install":"npm install","our:test":"npm run our:verify && npm test","our:verify":"npm run our:verify:directory && npm run our:verify:eslint && npm run our:verify:prettier","our:verify:directory":"valid-directory","our:verify:eslint":"eslint --fix --ignore-pattern '**/*.d.ts' --ignore-pattern '**/vendor/' --ignore-pattern '**/node_modules/' --ext .mjs,.js,.jsx,.ts,.tsx ./source","our:verify:prettier":"prettier --write .","test":"node ./test.cjs"},"eslintConfig":{"extends":["bevry"]},"prettier":{"semi":false,"singleQuote":true,"trailingComma":"all","endOfLine":"lf"},"boundation":{"sourceModule":false},"_id":"@bevry/pluginloader@5.1.0","gitHead":"c47ae6463b8607877cbc3389067dda935344cd3f","_nodeVersion":"20.10.0","_npmVersion":"10.2.3","dist":{"integrity":"sha512-KuJsgzU9ZWVth+/7Lb+VtCi7NAU/XKStkX+Q09dkyhzn5+NEVV/7JHkhEJal0a4wtxHzfktf6/O7BKUOWgFyEw==","shasum":"40e7b09d77794fc462440de65ab32f56c9d2aeb8","tarball":"https://registry.npmjs.org/@bevry/pluginloader/-/pluginloader-5.1.0.tgz","fileCount":14,"unpackedSize":65205,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCIqLJdQ7wnAZ8Z1xqUXDR2K6w9O1SEjgXJjrmSCCNBBgIhANQq5HHvHsAKdmPfklIpjwh6g9nORyhWbpOI+CJlgHP6"}]},"_npmUser":{"name":"bevryme","email":"us@bevry.me"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/pluginloader_5.1.0_1701824377567_0.5127367130755123"},"_hasShrinkwrap":false},"5.2.0-next.1703700467.deefed5a07a5894aab5df056495c79a66a5534d2":{"name":"@bevry/pluginloader","version":"5.2.0-next.1703700467.deefed5a07a5894aab5df056495c79a66a5534d2","license":"Artistic-2.0","description":"A class for loading, verifying, and creating plugins. Used by DocPad for years.","homepage":"https://github.com/bevry/pluginloader","funding":"https://bevry.me/fund","repository":{"type":"git","url":"git+https://github.com/bevry/pluginloader.git"},"bugs":{"url":"https://github.com/bevry/pluginloader/issues"},"keywords":["bevry","deno","deno-edition","deno-entry","denoland","docpad","es2016","es2022","loader","node","plugin","plugins","typed","types","typescript"],"badges":{"list":["githubworkflow","npmversion","npmdownloads","---","githubsponsors","thanksdev","patreon","liberapay","buymeacoffee","opencollective","crypto","paypal","---","discord","twitch"],"config":{"githubWorkflow":"bevry","githubSponsorsUsername":"balupton","thanksdevGithubUsername":"bevry","buymeacoffeeUsername":"balupton","cryptoURL":"https://bevry.me/crypto","flattrUsername":"balupton","liberapayUsername":"bevry","opencollectiveUsername":"bevry","patreonUsername":"bevry","paypalURL":"https://bevry.me/paypal","wishlistURL":"https://bevry.me/wishlist","discordServerID":"1147436445783560193","discordServerInvite":"nQuXddV7VP","twitchUsername":"balupton","githubUsername":"bevry","githubRepository":"pluginloader","githubSlug":"bevry/pluginloader","npmPackageName":"@bevry/pluginloader"}},"author":{"name":"Benjamin Lupton","email":"b@lupton.cc","url":"https://balupton.com"},"authors":["Benjamin Lupton <b@lupton.cc> (https://balupton.com) (https://github.com/balupton): Accelerating collaborative wisdom."],"maintainers":[{"name":"bevryme","email":"us@bevry.me"}],"contributors":[{"name":"Benjamin Lupton","email":"b@lupton.cc","url":"https://balupton.com"}],"sponsors":["Andrew Nesbitt (https://nesbitt.io) (https://github.com/andrew): Software engineer and researcher","Balsa <hello@balsa.com> (https://balsa.com) (https://github.com/balsa): We're Balsa, and we're building tools for builders.","Codecov <hello-codecov@sentry.io> (https://codecov.io/) (https://github.com/codecov): Empower developers with tools to improve code quality and testing.","Poonacha Medappa (https://poonachamedappa.com) (https://github.com/km-Poonacha)","Rob Morris <rob@prismatik.com.au> (https://github.com/Rob-Morris)","Sentry (https://sentry.io) (https://github.com/getsentry): Real-time crash reporting for your web apps, mobile apps, and games.","Syntax <scott@syntax.fm> (https://syntax.fm) (https://github.com/syntaxfm): Syntax Podcast"],"donors":["Andrew Nesbitt (https://nesbitt.io) (https://github.com/andrew)","Balsa <hello@balsa.com> (https://balsa.com) (https://github.com/balsa)","Chad (https://opencollective.com/chad8)","Codecov <hello-codecov@sentry.io> (https://codecov.io/) (https://github.com/codecov)","entroniq (https://gitlab.com/entroniq) (https://thanks.dev/d/gl/entroniq)","Jean-Luc Geering (https://github.com/jlgeering) (https://opencollective.com/jlgeering) (https://twitter.com/jlgeering)","Michael Duane Mooring (https://bevry.me) (https://github.com/mikeumus) (https://opencollective.com/mikeumus) (https://twitter.com/mikeumus)","Mohammed Shah <shah@idk.uno> (https://github.com/smashah) (https://thanks.dev/d/gh/smashah) (https://twitter.com/smashah)","Poonacha Medappa (https://poonachamedappa.com) (https://github.com/km-Poonacha)","Rob Morris <rob@prismatik.com.au> (https://github.com/Rob-Morris)","Sentry (https://sentry.io) (https://github.com/getsentry)","ServieJS (https://github.com/serviejs) (https://thanks.dev/d/gh/serviejs)","Skunk Team (https://skunk.team) (https://github.com/skunkteam)","Syntax <scott@syntax.fm> (https://syntax.fm) (https://github.com/syntaxfm)"],"engines":{"node":">=6"},"editions":[{"description":"TypeScript source code with Import for modules","directory":"source","entry":"index.ts","tags":["source","typescript","import"],"engines":false},{"description":"TypeScript compiled against ES2022 for Node.js 12 || 14 || 16 || 18 || 20 || 21 with Require for modules","directory":"edition-es2022","entry":"index.js","tags":["compiled","javascript","es2022","require"],"engines":{"node":"12 || 14 || 16 || 18 || 20 || 21","browsers":false}},{"description":"TypeScript compiled against ES2016 for Node.js 6 || 8 || 10 || 12 || 14 || 16 || 18 || 20 || 21 with Require for modules","directory":"edition-es2016","entry":"index.js","tags":["compiled","javascript","es2016","require"],"engines":{"node":"6 || 8 || 10 || 12 || 14 || 16 || 18 || 20 || 21","browsers":false}},{"description":"TypeScript compiled Types with Import for modules","directory":"edition-types","entry":"index.d.ts","tags":["compiled","types","import"],"engines":false}],"types":"edition-types/index.d.ts","type":"module","main":"index.cjs","deno":"edition-deno/index.ts","dependencies":{"editions":"^6.20.0","errlop":"^8.3.0","typechecker":"^9.3.0","version-range":"^4.12.0"},"devDependencies":{"@types/node":"^20.10.5","@typescript-eslint/eslint-plugin":"^6.16.0","@typescript-eslint/parser":"^6.16.0","assert-helpers":"^11.11.0","eslint":"^8.56.0","eslint-config-bevry":"^5.3.0","eslint-config-prettier":"^9.1.0","eslint-plugin-prettier":"^5.1.2","filedirname":"^3.3.0","kava":"^7.6.0","prettier":"^3.1.1","projectz":"^4.0.0","typedoc":"^0.25.4","typescript":"5.3.3","valid-directory":"^4.7.0"},"scripts":{"our:clean":"rm -rf ./docs ./edition* ./es2015 ./es5 ./out ./.next","our:compile":"npm run our:compile:edition-es2016 && npm run our:compile:edition-es2022 && npm run our:compile:edition-types","our:compile:edition-es2016":"tsc --module commonjs --target ES2016 --outDir ./edition-es2016 --project tsconfig.json && ( test ! -d edition-es2016/source || ( mv edition-es2016/source edition-temp && rm -rf edition-es2016 && mv edition-temp edition-es2016 ) ) && printf '%s' '{\"type\": \"commonjs\"}' > edition-es2016/package.json","our:compile:edition-es2022":"tsc --module commonjs --target ES2022 --outDir ./edition-es2022 --project tsconfig.json && ( test ! -d edition-es2022/source || ( mv edition-es2022/source edition-temp && rm -rf edition-es2022 && mv edition-temp edition-es2022 ) ) && printf '%s' '{\"type\": \"commonjs\"}' > edition-es2022/package.json","our:compile:edition-types":"tsc --emitDeclarationOnly --declaration --declarationMap --declarationDir ./edition-types --project tsconfig.json && ( test ! -d edition-types/source || ( mv edition-types/source edition-temp && rm -rf edition-types && mv edition-temp edition-types ) )","our:deploy":"printf '%s\n' 'no need for this project'","our:meta":"npm run our:meta:docs && npm run our:meta:projectz","our:meta:docs":"npm run our:meta:docs:typedoc","our:meta:docs:typedoc":"rm -rf ./docs && typedoc --exclude '**/+(*test*|node_modules)' --excludeExternals --out ./docs ./source","our:meta:projectz":"projectz","our:release":"npm run our:release:prepare && npm run our:release:check-changelog && npm run our:release:check-dirty && npm run our:release:tag && npm run our:release:push","our:release:check-changelog":"cat ./HISTORY.md | grep \"v$npm_package_version\" || (printf '%s\n' \"add a changelog entry for v$npm_package_version\" && exit -1)","our:release:check-dirty":"git diff --exit-code","our:release:prepare":"npm run our:clean && npm run our:compile && npm run our:test && npm run our:meta","our:release:push":"git push origin && git push origin --tags","our:release:tag":"export MESSAGE=$(cat ./HISTORY.md | sed -n \"/## v$npm_package_version/,/##/p\" | sed 's/## //' | awk 'NR>1{print buf}{buf = $0}') && test \"$MESSAGE\" || (printf '%s\n' 'proper changelog entry not found' && exit -1) && git tag \"v$npm_package_version\" -am \"$MESSAGE\"","our:setup":"npm run our:setup:install","our:setup:install":"npm install","our:test":"npm run our:verify && npm test","our:verify":"npm run our:verify:eslint && npm run our:verify:prettier","our:verify:eslint":"eslint --fix --ignore-pattern '**/*.d.ts' --ignore-pattern '**/vendor/' --ignore-pattern '**/node_modules/' --ext .mjs,.js,.jsx,.ts,.tsx ./source","our:verify:prettier":"prettier --write .","test":"node ./test.cjs"},"boundation":{"sourceModule":false},"eslintConfig":{"extends":["bevry"]},"prettier":{"semi":false,"singleQuote":true,"trailingComma":"all","endOfLine":"lf"},"_id":"@bevry/pluginloader@5.2.0-next.1703700467.deefed5a07a5894aab5df056495c79a66a5534d2","readme":"<!-- TITLE/ -->\n\n# @bevry/pluginloader\n\n<!-- /TITLE -->\n\n<!-- BADGES/ -->\n\n<span class=\"badge-githubworkflow\"><a href=\"https://github.com/bevry/pluginloader/actions?query=workflow%3Abevry\" title=\"View the status of this project's GitHub Workflow: bevry\"><img src=\"https://github.com/bevry/pluginloader/workflows/bevry/badge.svg\" alt=\"Status of the GitHub Workflow: bevry\" /></a></span>\n<span class=\"badge-npmversion\"><a href=\"https://npmjs.org/package/@bevry/pluginloader\" title=\"View this project on NPM\"><img src=\"https://img.shields.io/npm/v/@bevry/pluginloader.svg\" alt=\"NPM version\" /></a></span>\n<span class=\"badge-npmdownloads\"><a href=\"https://npmjs.org/package/@bevry/pluginloader\" title=\"View this project on NPM\"><img src=\"https://img.shields.io/npm/dm/@bevry/pluginloader.svg\" alt=\"NPM downloads\" /></a></span>\n<br class=\"badge-separator\" />\n<span class=\"badge-githubsponsors\"><a href=\"https://github.com/sponsors/balupton\" title=\"Donate to this project using GitHub Sponsors\"><img src=\"https://img.shields.io/badge/github-donate-yellow.svg\" alt=\"GitHub Sponsors donate button\" /></a></span>\n<span class=\"badge-thanksdev\"><a href=\"https://thanks.dev/u/gh/bevry\" title=\"Donate to this project using ThanksDev\"><img src=\"https://img.shields.io/badge/thanksdev-donate-yellow.svg\" alt=\"ThanksDev donate button\" /></a></span>\n<span class=\"badge-patreon\"><a href=\"https://patreon.com/bevry\" title=\"Donate to this project using Patreon\"><img src=\"https://img.shields.io/badge/patreon-donate-yellow.svg\" alt=\"Patreon donate button\" /></a></span>\n<span class=\"badge-liberapay\"><a href=\"https://liberapay.com/bevry\" title=\"Donate to this project using Liberapay\"><img src=\"https://img.shields.io/badge/liberapay-donate-yellow.svg\" alt=\"Liberapay donate button\" /></a></span>\n<span class=\"badge-buymeacoffee\"><a href=\"https://buymeacoffee.com/balupton\" title=\"Donate to this project using Buy Me A Coffee\"><img src=\"https://img.shields.io/badge/buy%20me%20a%20coffee-donate-yellow.svg\" alt=\"Buy Me A Coffee donate button\" /></a></span>\n<span class=\"badge-opencollective\"><a href=\"https://opencollective.com/bevry\" title=\"Donate to this project using Open Collective\"><img src=\"https://img.shields.io/badge/open%20collective-donate-yellow.svg\" alt=\"Open Collective donate button\" /></a></span>\n<span class=\"badge-crypto\"><a href=\"https://bevry.me/crypto\" title=\"Donate to this project using Cryptocurrency\"><img src=\"https://img.shields.io/badge/crypto-donate-yellow.svg\" alt=\"crypto donate button\" /></a></span>\n<span class=\"badge-paypal\"><a href=\"https://bevry.me/paypal\" title=\"Donate to this project using Paypal\"><img src=\"https://img.shields.io/badge/paypal-donate-yellow.svg\" alt=\"PayPal donate button\" /></a></span>\n<br class=\"badge-separator\" />\n<span class=\"badge-discord\"><a href=\"https://discord.gg/nQuXddV7VP\" title=\"Join this project's community on Discord\"><img src=\"https://img.shields.io/discord/1147436445783560193?logo=discord&amp;label=discord\" alt=\"Discord server badge\" /></a></span>\n<span class=\"badge-twitch\"><a href=\"https://www.twitch.tv/balupton\" title=\"Join this project's community on Twitch\"><img src=\"https://img.shields.io/twitch/status/balupton?logo=twitch\" alt=\"Twitch community badge\" /></a></span>\n\n<!-- /BADGES -->\n\n<!-- DESCRIPTION/ -->\n\nA class for loading, verifying, and creating plugins. Used by DocPad for years.\n\n<!-- /DESCRIPTION -->\n\n\n## Usage\n\n[Complete API Documentation.](http://master.pluginloader.bevry.surge.sh/docs/)\n\n### Basics\n\nCreate your project:\n\n1. `mkdir my-project`\n1. `cd my-project`\n\nCreate your plugin:\n\n1. `mkdir myplugin`\n1. `cd myplugin`\n1. `npm init`\n1. `index.js` to:\n\n    ```javascript\n    module.exports = function (BasePlugin) {\n        return class MyPlugin extends BasePlugin {\n            constructor(...args) {\n                super(...args)\n                console.log('hello from my plugin')\n            }\n        }\n    }\n    ```\n\n1. `cd ..`\n\nCreate your plugin loader:\n\n1. `mkdir myapp`\n1. `cd myapp`\n1. `npm init`\n1. `index.js` to:\n\n    ```javascript\n    import PluginLoader from '@bevry/pluginloader'\n\n    class BasePlugin {\n        constructor() {\n            console.log('hello from base plugin')\n        }\n    }\n\n    const pluginLoader = new PluginLoader({\n        BasePlugin,\n        pluginPath: require('path').resolve(__dirname, '..', 'myplugin'),\n    })\n    ```\n\n1. `cd ..`\n\nRun the project:\n\n1. `node myapp/index.js`\n\n### Ecosystem\n\n-   [pluginclerk](https://github.com/bevry/pluginclerk) a project for fetching compatible plugins from the npm registry\n-   [docpad-baseplugin](https://github.com/docpad/docpad-baseplugin) the BasePlugin class that DocPad uses\n-   [docpad-plugintester](https://github.com/docpad/docpad-plugintester) testing helpers for DocPad plugins\n\n<!-- INSTALL/ -->\n\n## Install\n\n### [npm](https://npmjs.com \"npm is a package manager for javascript\")\n\n-   Install: `npm install --save @bevry/pluginloader`\n-   Import: `import * as pkg from ('@bevry/pluginloader')`\n-   Require: `const pkg = require('@bevry/pluginloader')`\n\n### [Deno](https://deno.land \"Deno is a secure runtime for JavaScript and TypeScript, it is an alternative for Node.js\")\n\n``` typescript\nimport * as pkg from 'https://unpkg.com/@bevry/pluginloader@^5.2.0/edition-deno/index.ts'\n```\n### [Editions](https://editions.bevry.me \"Editions are the best way to produce and consume packages you care about.\")\n\nThis package is published with the following editions:\n-   `@bevry/pluginloader` aliases `@bevry/pluginloader/index.cjs` which uses the [Editions Autoloader](https://github.com/bevry/editions \"You can use the Editions Autoloader to autoload the appropriate edition for your consumers environment\") to automatically select the correct edition for the consumer's environment\n-   `@bevry/pluginloader/source/index.ts` is [TypeScript](https://www.typescriptlang.org/ \"TypeScript is a typed superset of JavaScript that compiles to plain JavaScript.\") source code with [Import](https://babeljs.io/docs/learn-es2015/#modules \"ECMAScript Modules\") for modules\n-   `@bevry/pluginloader/edition-es2022/index.js` is [TypeScript](https://www.typescriptlang.org/ \"TypeScript is a typed superset of JavaScript that compiles to plain JavaScript.\") compiled against [ES2022](https://en.wikipedia.org/wiki/ES2022 \"ECMAScript 2022\") for [Node.js](https://nodejs.org \"Node.js is a JavaScript runtime built on Chrome's V8 JavaScript engine\") 12 || 14 || 16 || 18 || 20 || 21 with [Require](https://nodejs.org/dist/latest-v5.x/docs/api/modules.html \"Node/CJS Modules\") for modules\n-   `@bevry/pluginloader/edition-es2016/index.js` is [TypeScript](https://www.typescriptlang.org/ \"TypeScript is a typed superset of JavaScript that compiles to plain JavaScript.\") compiled against [ES2016](https://en.wikipedia.org/wiki/ES2016 \"ECMAScript 2016\") for [Node.js](https://nodejs.org \"Node.js is a JavaScript runtime built on Chrome's V8 JavaScript engine\") 6 || 8 || 10 || 12 || 14 || 16 || 18 || 20 || 21 with [Require](https://nodejs.org/dist/latest-v5.x/docs/api/modules.html \"Node/CJS Modules\") for modules\n-   `@bevry/pluginloader/edition-types/index.d.ts` is [TypeScript](https://www.typescriptlang.org/ \"TypeScript is a typed superset of JavaScript that compiles to plain JavaScript.\") compiled Types with [Import](https://babeljs.io/docs/learn-es2015/#modules \"ECMAScript Modules\") for modules\n\n<!-- /INSTALL -->\n\n<!-- HISTORY/ -->\n\n## History\n\n[Discover the release history by heading on over to the `HISTORY.md` file.](https://github.com/bevry/pluginloader/blob/HEAD/HISTORY.md#files)\n\n<!-- /HISTORY -->\n\n<!-- BACKERS/ -->\n\n## Backers\n\n### Code\n\n[Discover how to contribute via the `CONTRIBUTING.md` file.](https://github.com/bevry/pluginloader/blob/HEAD/CONTRIBUTING.md#files)\n\n#### Authors\n\n-   [Benjamin Lupton](https://balupton.com) — Accelerating collaborative wisdom.\n\n#### Maintainers\n\n-   [Benjamin Lupton](https://github.com/balupton) — Accelerating collaborative wisdom.\n\n#### Contributors\n\n-   [Benjamin Lupton](https://github.com/balupton) — [view contributions](https://github.com/bevry/pluginloader/commits?author=balupton \"View the GitHub contributions of Benjamin Lupton on repository bevry/pluginloader\")\n\n### Finances\n\n<span class=\"badge-githubsponsors\"><a href=\"https://github.com/sponsors/balupton\" title=\"Donate to this project using GitHub Sponsors\"><img src=\"https://img.shields.io/badge/github-donate-yellow.svg\" alt=\"GitHub Sponsors donate button\" /></a></span>\n<span class=\"badge-thanksdev\"><a href=\"https://thanks.dev/u/gh/bevry\" title=\"Donate to this project using ThanksDev\"><img src=\"https://img.shields.io/badge/thanksdev-donate-yellow.svg\" alt=\"ThanksDev donate button\" /></a></span>\n<span class=\"badge-patreon\"><a href=\"https://patreon.com/bevry\" title=\"Donate to this project using Patreon\"><img src=\"https://img.shields.io/badge/patreon-donate-yellow.svg\" alt=\"Patreon donate button\" /></a></span>\n<span class=\"badge-liberapay\"><a href=\"https://liberapay.com/bevry\" title=\"Donate to this project using Liberapay\"><img src=\"https://img.shields.io/badge/liberapay-donate-yellow.svg\" alt=\"Liberapay donate button\" /></a></span>\n<span class=\"badge-buymeacoffee\"><a href=\"https://buymeacoffee.com/balupton\" title=\"Donate to this project using Buy Me A Coffee\"><img src=\"https://img.shields.io/badge/buy%20me%20a%20coffee-donate-yellow.svg\" alt=\"Buy Me A Coffee donate button\" /></a></span>\n<span class=\"badge-opencollective\"><a href=\"https://opencollective.com/bevry\" title=\"Donate to this project using Open Collective\"><img src=\"https://img.shields.io/badge/open%20collective-donate-yellow.svg\" alt=\"Open Collective donate button\" /></a></span>\n<span class=\"badge-crypto\"><a href=\"https://bevry.me/crypto\" title=\"Donate to this project using Cryptocurrency\"><img src=\"https://img.shields.io/badge/crypto-donate-yellow.svg\" alt=\"crypto donate button\" /></a></span>\n<span class=\"badge-paypal\"><a href=\"https://bevry.me/paypal\" title=\"Donate to this project using Paypal\"><img src=\"https://img.shields.io/badge/paypal-donate-yellow.svg\" alt=\"PayPal donate button\" /></a></span>\n\n#### Sponsors\n\n-   [Andrew Nesbitt](https://nesbitt.io) — Software engineer and researcher\n-   [Balsa](https://balsa.com) — We're Balsa, and we're building tools for builders.\n-   [Codecov](https://codecov.io/) — Empower developers with tools to improve code quality and testing.\n-   [Poonacha Medappa](https://poonachamedappa.com)\n-   [Rob Morris](https://github.com/Rob-Morris)\n-   [Sentry](https://sentry.io) — Real-time crash reporting for your web apps, mobile apps, and games.\n-   [Syntax](https://syntax.fm) — Syntax Podcast\n\n#### Donors\n\n-   [Andrew Nesbitt](https://nesbitt.io)\n-   [Balsa](https://balsa.com)\n-   [Chad](https://opencollective.com/chad8)\n-   [Codecov](https://codecov.io/)\n-   [entroniq](https://gitlab.com/entroniq)\n-   [Jean-Luc Geering](https://github.com/jlgeering)\n-   [Michael Duane Mooring](https://bevry.me)\n-   [Mohammed Shah](https://github.com/smashah)\n-   [Poonacha Medappa](https://poonachamedappa.com)\n-   [Rob Morris](https://github.com/Rob-Morris)\n-   [Sentry](https://sentry.io)\n-   [ServieJS](https://github.com/serviejs)\n-   [Skunk Team](https://skunk.team)\n-   [Syntax](https://syntax.fm)\n\n<!-- /BACKERS -->\n\n<!-- LICENSE/ -->\n\n## License\n\nUnless stated otherwise all works are:\n\n-   Copyright &copy; [Benjamin Lupton](https://balupton.com)\n\nand licensed under:\n\n-   [Artistic License 2.0](http://spdx.org/licenses/Artistic-2.0.html)\n\n<!-- /LICENSE -->\n","readmeFilename":"README.md","gitHead":"deefed5a07a5894aab5df056495c79a66a5534d2","_nodeVersion":"20.10.0","_npmVersion":"10.2.3","dist":{"integrity":"sha512-PpvWjvnI2gNpwo0bG54V80Q9BEVhxHPQNbiRgB5D/YFDfnoBU0jHhgI4FGMo0NK7/wcrQAvpoK5VS4vGKrDZ3Q==","shasum":"1889d7b38a71e5dcb054ad6964c9852003e730fa","tarball":"https://registry.npmjs.org/@bevry/pluginloader/-/pluginloader-5.2.0-next.1703700467.deefed5a07a5894aab5df056495c79a66a5534d2.tgz","fileCount":14,"unpackedSize":67342,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFLE0m2xY6C/oLZUS0CutGkaTgNpzonLDoxKdyggo/19AiEAy2+ndhonI7a8ckm1L6lXx0b8BPLL4MC+YQtPKI1GfoM="}]},"_npmUser":{"name":"bevryme","email":"us@bevry.me"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/pluginloader_5.2.0-next.1703700467.deefed5a07a5894aab5df056495c79a66a5534d2_1703700469317_0.6052070304713537"},"_hasShrinkwrap":false},"5.2.0":{"name":"@bevry/pluginloader","version":"5.2.0","license":"Artistic-2.0","description":"A class for loading, verifying, and creating plugins. Used by DocPad for years.","homepage":"https://github.com/bevry/pluginloader","funding":"https://bevry.me/fund","repository":{"type":"git","url":"git+https://github.com/bevry/pluginloader.git"},"bugs":{"url":"https://github.com/bevry/pluginloader/issues"},"keywords":["bevry","deno","deno-edition","deno-entry","denoland","docpad","es2016","es2022","loader","node","plugin","plugins","typed","types","typescript"],"badges":{"list":["githubworkflow","npmversion","npmdownloads","---","githubsponsors","thanksdev","patreon","liberapay","buymeacoffee","opencollective","crypto","paypal","---","discord","twitch"],"config":{"githubWorkflow":"bevry","githubSponsorsUsername":"balupton","thanksdevGithubUsername":"bevry","buymeacoffeeUsername":"balupton","cryptoURL":"https://bevry.me/crypto","flattrUsername":"balupton","liberapayUsername":"bevry","opencollectiveUsername":"bevry","patreonUsername":"bevry","paypalURL":"https://bevry.me/paypal","wishlistURL":"https://bevry.me/wishlist","discordServerID":"1147436445783560193","discordServerInvite":"nQuXddV7VP","twitchUsername":"balupton","githubUsername":"bevry","githubRepository":"pluginloader","githubSlug":"bevry/pluginloader","npmPackageName":"@bevry/pluginloader"}},"author":{"name":"Benjamin Lupton","email":"b@lupton.cc","url":"https://balupton.com"},"authors":["Benjamin Lupton <b@lupton.cc> (https://balupton.com) (https://github.com/balupton): Accelerating collaborative wisdom."],"maintainers":[{"name":"bevryme","email":"us@bevry.me"}],"contributors":[{"name":"Benjamin Lupton","email":"b@lupton.cc","url":"https://balupton.com"}],"sponsors":["Andrew Nesbitt (https://nesbitt.io) (https://github.com/andrew): Software engineer and researcher","Balsa <hello@balsa.com> (https://balsa.com) (https://github.com/balsa): We're Balsa, and we're building tools for builders.","Codecov <hello-codecov@sentry.io> (https://codecov.io/) (https://github.com/codecov): Empower developers with tools to improve code quality and testing.","Poonacha Medappa (https://poonachamedappa.com) (https://github.com/km-Poonacha)","Rob Morris <rob@prismatik.com.au> (https://github.com/Rob-Morris)","Sentry (https://sentry.io) (https://github.com/getsentry): Real-time crash reporting for your web apps, mobile apps, and games.","Syntax <scott@syntax.fm> (https://syntax.fm) (https://github.com/syntaxfm): Syntax Podcast"],"donors":["Andrew Nesbitt (https://nesbitt.io) (https://github.com/andrew)","Balsa <hello@balsa.com> (https://balsa.com) (https://github.com/balsa)","Chad (https://opencollective.com/chad8)","Codecov <hello-codecov@sentry.io> (https://codecov.io/) (https://github.com/codecov)","entroniq (https://gitlab.com/entroniq) (https://thanks.dev/d/gl/entroniq)","Jean-Luc Geering (https://github.com/jlgeering) (https://opencollective.com/jlgeering) (https://twitter.com/jlgeering)","Michael Duane Mooring (https://bevry.me) (https://github.com/mikeumus) (https://opencollective.com/mikeumus) (https://twitter.com/mikeumus)","Mohammed Shah <shah@idk.uno> (https://github.com/smashah) (https://thanks.dev/d/gh/smashah) (https://twitter.com/smashah)","Poonacha Medappa (https://poonachamedappa.com) (https://github.com/km-Poonacha)","Rob Morris <rob@prismatik.com.au> (https://github.com/Rob-Morris)","Sentry (https://sentry.io) (https://github.com/getsentry)","ServieJS (https://github.com/serviejs) (https://thanks.dev/d/gh/serviejs)","Skunk Team (https://skunk.team) (https://github.com/skunkteam)","Syntax <scott@syntax.fm> (https://syntax.fm) (https://github.com/syntaxfm)"],"engines":{"node":">=6"},"editions":[{"description":"TypeScript source code with Import for modules","directory":"source","entry":"index.ts","tags":["source","typescript","import"],"engines":false},{"description":"TypeScript compiled against ES2022 for Node.js 12 || 14 || 16 || 18 || 20 || 21 with Require for modules","directory":"edition-es2022","entry":"index.js","tags":["compiled","javascript","es2022","require"],"engines":{"node":"12 || 14 || 16 || 18 || 20 || 21","browsers":false}},{"description":"TypeScript compiled against ES2016 for Node.js 6 || 8 || 10 || 12 || 14 || 16 || 18 || 20 || 21 with Require for modules","directory":"edition-es2016","entry":"index.js","tags":["compiled","javascript","es2016","require"],"engines":{"node":"6 || 8 || 10 || 12 || 14 || 16 || 18 || 20 || 21","browsers":false}},{"description":"TypeScript compiled Types with Import for modules","directory":"edition-types","entry":"index.d.ts","tags":["compiled","types","import"],"engines":false}],"types":"edition-types/index.d.ts","type":"module","main":"index.cjs","deno":"edition-deno/index.ts","dependencies":{"editions":"^6.20.0","errlop":"^8.3.0","typechecker":"^9.3.0","version-range":"^4.12.0"},"devDependencies":{"@types/node":"^20.10.5","@typescript-eslint/eslint-plugin":"^6.16.0","@typescript-eslint/parser":"^6.16.0","assert-helpers":"^11.11.0","eslint":"^8.56.0","eslint-config-bevry":"^5.3.0","eslint-config-prettier":"^9.1.0","eslint-plugin-prettier":"^5.1.2","filedirname":"^3.3.0","kava":"^7.6.0","prettier":"^3.1.1","projectz":"^4.0.0","typedoc":"^0.25.4","typescript":"5.3.3","valid-directory":"^4.7.0"},"scripts":{"our:clean":"rm -rf ./docs ./edition* ./es2015 ./es5 ./out ./.next","our:compile":"npm run our:compile:edition-es2016 && npm run our:compile:edition-es2022 && npm run our:compile:edition-types","our:compile:edition-es2016":"tsc --module commonjs --target ES2016 --outDir ./edition-es2016 --project tsconfig.json && ( test ! -d edition-es2016/source || ( mv edition-es2016/source edition-temp && rm -rf edition-es2016 && mv edition-temp edition-es2016 ) ) && printf '%s' '{\"type\": \"commonjs\"}' > edition-es2016/package.json","our:compile:edition-es2022":"tsc --module commonjs --target ES2022 --outDir ./edition-es2022 --project tsconfig.json && ( test ! -d edition-es2022/source || ( mv edition-es2022/source edition-temp && rm -rf edition-es2022 && mv edition-temp edition-es2022 ) ) && printf '%s' '{\"type\": \"commonjs\"}' > edition-es2022/package.json","our:compile:edition-types":"tsc --emitDeclarationOnly --declaration --declarationMap --declarationDir ./edition-types --project tsconfig.json && ( test ! -d edition-types/source || ( mv edition-types/source edition-temp && rm -rf edition-types && mv edition-temp edition-types ) )","our:deploy":"printf '%s\n' 'no need for this project'","our:meta":"npm run our:meta:docs && npm run our:meta:projectz","our:meta:docs":"npm run our:meta:docs:typedoc","our:meta:docs:typedoc":"rm -rf ./docs && typedoc --exclude '**/+(*test*|node_modules)' --excludeExternals --out ./docs ./source","our:meta:projectz":"projectz","our:release":"npm run our:release:prepare && npm run our:release:check-changelog && npm run our:release:check-dirty && npm run our:release:tag && npm run our:release:push","our:release:check-changelog":"cat ./HISTORY.md | grep \"v$npm_package_version\" || (printf '%s\n' \"add a changelog entry for v$npm_package_version\" && exit -1)","our:release:check-dirty":"git diff --exit-code","our:release:prepare":"npm run our:clean && npm run our:compile && npm run our:test && npm run our:meta","our:release:push":"git push origin && git push origin --tags","our:release:tag":"export MESSAGE=$(cat ./HISTORY.md | sed -n \"/## v$npm_package_version/,/##/p\" | sed 's/## //' | awk 'NR>1{print buf}{buf = $0}') && test \"$MESSAGE\" || (printf '%s\n' 'proper changelog entry not found' && exit -1) && git tag \"v$npm_package_version\" -am \"$MESSAGE\"","our:setup":"npm run our:setup:install","our:setup:install":"npm install","our:test":"npm run our:verify && npm test","our:verify":"npm run our:verify:eslint && npm run our:verify:prettier","our:verify:eslint":"eslint --fix --ignore-pattern '**/*.d.ts' --ignore-pattern '**/vendor/' --ignore-pattern '**/node_modules/' --ext .mjs,.js,.jsx,.ts,.tsx ./source","our:verify:prettier":"prettier --write .","test":"node ./test.cjs"},"boundation":{"sourceModule":false},"eslintConfig":{"extends":["bevry"]},"prettier":{"semi":false,"singleQuote":true,"trailingComma":"all","endOfLine":"lf"},"_id":"@bevry/pluginloader@5.2.0","gitHead":"deefed5a07a5894aab5df056495c79a66a5534d2","_nodeVersion":"20.10.0","_npmVersion":"10.2.3","dist":{"integrity":"sha512-3qnTs0t4yF7E3+OYoYIbZ9jLKBL/MHR/QTD4C+2ETnNPV50kmecFMoHuvDFXQOMO2bHnYGmDXptStYxXwv8llw==","shasum":"5830d7b345733953ddcb03afcf6b932fedee1479","tarball":"https://registry.npmjs.org/@bevry/pluginloader/-/pluginloader-5.2.0.tgz","fileCount":14,"unpackedSize":67285,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC9b7kbAqSpNGsjQM2NMtzowTRZSZkP7GJedoQgyGIInQIhAODuW+uDiNQGd7+fpIqrV4FL0L9o8JDPC0BiCQMSMo5u"}]},"_npmUser":{"name":"bevryme","email":"us@bevry.me"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/pluginloader_5.2.0_1703700550760_0.4413866321947728"},"_hasShrinkwrap":false},"5.3.0-next.1703874887.55f5f04d37a37048c24d9f3f6c20677a44e67350":{"name":"@bevry/pluginloader","version":"5.3.0-next.1703874887.55f5f04d37a37048c24d9f3f6c20677a44e67350","license":"Artistic-2.0","description":"A class for loading, verifying, and creating plugins. Used by DocPad for years.","homepage":"https://github.com/bevry/pluginloader","funding":"https://bevry.me/fund","repository":{"type":"git","url":"git+https://github.com/bevry/pluginloader.git"},"bugs":{"url":"https://github.com/bevry/pluginloader/issues"},"keywords":["bevry","deno","deno-edition","deno-entry","denoland","docpad","es2016","es2022","loader","node","plugin","plugins","typed","types","typescript"],"badges":{"list":["githubworkflow","npmversion","npmdownloads","---","githubsponsors","thanksdev","patreon","liberapay","buymeacoffee","opencollective","crypto","paypal","---","discord","twitch"],"config":{"githubWorkflow":"bevry","githubSponsorsUsername":"balupton","thanksdevGithubUsername":"bevry","buymeacoffeeUsername":"balupton","cryptoURL":"https://bevry.me/crypto","flattrUsername":"balupton","liberapayUsername":"bevry","opencollectiveUsername":"bevry","patreonUsername":"bevry","paypalURL":"https://bevry.me/paypal","wishlistURL":"https://bevry.me/wishlist","discordServerID":"1147436445783560193","discordServerInvite":"nQuXddV7VP","twitchUsername":"balupton","githubUsername":"bevry","githubRepository":"pluginloader","githubSlug":"bevry/pluginloader","npmPackageName":"@bevry/pluginloader"}},"author":{"name":"Benjamin Lupton","email":"b@lupton.cc","url":"https://balupton.com"},"authors":["Benjamin Lupton <b@lupton.cc> (https://balupton.com) (https://github.com/balupton): Accelerating collaborative wisdom."],"maintainers":[{"name":"bevryme","email":"us@bevry.me"}],"contributors":[{"name":"Benjamin Lupton","email":"b@lupton.cc","url":"https://balupton.com"}],"sponsors":["Andrew Nesbitt (https://nesbitt.io) (https://github.com/andrew): Software engineer and researcher","Balsa <hello@balsa.com> (https://balsa.com) (https://github.com/balsa): We're Balsa, and we're building tools for builders.","Codecov <hello-codecov@sentry.io> (https://codecov.io) (https://github.com/codecov): Empower developers with tools to improve code quality and testing.","Poonacha Medappa (https://poonachamedappa.com) (https://github.com/km-Poonacha)","Rob Morris <rob@prismatik.com.au> (https://github.com/Rob-Morris)","Sentry (https://sentry.io) (https://github.com/getsentry): Real-time crash reporting for your web apps, mobile apps, and games.","Syntax <scott@syntax.fm> (https://syntax.fm) (https://github.com/syntaxfm): Syntax Podcast"],"donors":["Andrew Nesbitt (https://nesbitt.io) (https://github.com/andrew)","Armen Mkrtchian (https://mogoni.dev) (https://github.com/Armenm)","Balsa <hello@balsa.com> (https://balsa.com) (https://github.com/balsa)","Chad (https://opencollective.com/chad8)","Codecov <hello-codecov@sentry.io> (https://codecov.io) (https://github.com/codecov)","dr.dimitru (https://veliovgroup.com) (https://github.com/dr-dimitru)","Elliott Ditman (https://elliottditman.com) (https://github.com/elliottditman)","entroniq (https://gitlab.com/entroniq) (https://thanks.dev/d/gl/entroniq)","GitHub (https://github.com/about) (https://github.com/github)","Hunter Beast (https://cryptoquick.com) (https://github.com/cryptoquick)","Jean-Luc Geering (https://github.com/jlgeering) (https://opencollective.com/jlgeering) (https://twitter.com/jlgeering)","Michael Duane Mooring (https://mdm.cc) (https://github.com/mikeumus) (https://opencollective.com/mikeumus) (https://twitter.com/mikeumus)","Michael Harry Scepaniak <mhs1.sys@gmail.com> (https://michaelscepaniak.com) (https://github.com/hispanic)","Mohammed Shah <shah@idk.uno> (https://github.com/smashah) (https://thanks.dev/d/gh/smashah) (https://twitter.com/smashah)","Mr. Henry <hello@mrhenry.be> (https://mrhenry.be) (https://github.com/mrhenry)","Nermal <nermalcat69@skiff.com> (https://arjunaditya.vercel.app) (https://github.com/nermalcat69)","Pleo (https://pleo.io) (https://github.com/pleo-io)","Poonacha Medappa (https://poonachamedappa.com) (https://github.com/km-Poonacha)","Rob Morris <rob@prismatik.com.au> (https://github.com/Rob-Morris)","Robert de Forest <guitar.robot@gmail.com> (https://github.com/rdeforest)","Sentry (https://sentry.io) (https://github.com/getsentry)","ServieJS (https://github.com/serviejs) (https://thanks.dev/d/gh/serviejs)","Skunk Team (https://skunk.team) (https://github.com/skunkteam)","Syntax <scott@syntax.fm> (https://syntax.fm) (https://github.com/syntaxfm)","WriterJohnBuck (https://github.com/WriterJohnBuck)"],"engines":{"node":">=6"},"editions":[{"description":"TypeScript source code with Import for modules","directory":"source","entry":"index.ts","tags":["source","typescript","import"],"engines":false},{"description":"TypeScript compiled against ES2022 for Node.js 12 || 14 || 16 || 18 || 20 || 21 with Require for modules","directory":"edition-es2022","entry":"index.js","tags":["compiled","javascript","es2022","require"],"engines":{"node":"12 || 14 || 16 || 18 || 20 || 21","browsers":false}},{"description":"TypeScript compiled against ES2016 for Node.js 6 || 8 || 10 || 12 || 14 || 16 || 18 || 20 || 21 with Require for modules","directory":"edition-es2016","entry":"index.js","tags":["compiled","javascript","es2016","require"],"engines":{"node":"6 || 8 || 10 || 12 || 14 || 16 || 18 || 20 || 21","browsers":false}},{"description":"TypeScript compiled Types with Import for modules","directory":"edition-types","entry":"index.d.ts","tags":["compiled","types","import"],"engines":false}],"types":"edition-types/index.d.ts","type":"module","main":"index.cjs","deno":"edition-deno/index.ts","dependencies":{"editions":"^6.21.0","errlop":"^8.4.0","typechecker":"^9.3.0","version-range":"^4.13.0"},"devDependencies":{"@types/node":"^20.10.5","@typescript-eslint/eslint-plugin":"^6.16.0","@typescript-eslint/parser":"^6.16.0","assert-helpers":"^11.12.0","eslint":"^8.56.0","eslint-config-bevry":"^5.3.0","eslint-config-prettier":"^9.1.0","eslint-plugin-prettier":"^5.1.2","filedirname":"^3.4.0","kava":"^7.8.0","prettier":"^3.1.1","projectz":"^4.1.1","typedoc":"^0.25.4","typescript":"5.3.3","valid-directory":"^4.8.0"},"scripts":{"our:clean":"rm -rf ./docs ./edition* ./es2015 ./es5 ./out ./.next","our:compile":"npm run our:compile:edition-es2016 && npm run our:compile:edition-es2022 && npm run our:compile:edition-types","our:compile:edition-es2016":"tsc --module commonjs --target ES2016 --outDir ./edition-es2016 --project tsconfig.json && ( test ! -d edition-es2016/source || ( mv edition-es2016/source edition-temp && rm -rf edition-es2016 && mv edition-temp edition-es2016 ) ) && printf '%s' '{\"type\": \"commonjs\"}' > edition-es2016/package.json","our:compile:edition-es2022":"tsc --module commonjs --target ES2022 --outDir ./edition-es2022 --project tsconfig.json && ( test ! -d edition-es2022/source || ( mv edition-es2022/source edition-temp && rm -rf edition-es2022 && mv edition-temp edition-es2022 ) ) && printf '%s' '{\"type\": \"commonjs\"}' > edition-es2022/package.json","our:compile:edition-types":"tsc --emitDeclarationOnly --declaration --declarationMap --declarationDir ./edition-types --project tsconfig.json && ( test ! -d edition-types/source || ( mv edition-types/source edition-temp && rm -rf edition-types && mv edition-temp edition-types ) )","our:deploy":"printf '%s\n' 'no need for this project'","our:meta":"npm run our:meta:docs && npm run our:meta:projectz","our:meta:docs":"npm run our:meta:docs:typedoc","our:meta:docs:typedoc":"rm -rf ./docs && typedoc --exclude '**/+(*test*|node_modules)' --excludeExternals --out ./docs ./source","our:meta:projectz":"projectz --offline","our:release":"npm run our:release:prepare && npm run our:release:check-changelog && npm run our:release:check-dirty && npm run our:release:tag && npm run our:release:push","our:release:check-changelog":"cat ./HISTORY.md | grep \"v$npm_package_version\" || (printf '%s\n' \"add a changelog entry for v$npm_package_version\" && exit -1)","our:release:check-dirty":"git diff --exit-code","our:release:prepare":"npm run our:clean && npm run our:compile && npm run our:test && npm run our:meta","our:release:push":"git push origin && git push origin --tags","our:release:tag":"export MESSAGE=$(cat ./HISTORY.md | sed -n \"/## v$npm_package_version/,/##/p\" | sed 's/## //' | awk 'NR>1{print buf}{buf = $0}') && test \"$MESSAGE\" || (printf '%s\n' 'proper changelog entry not found' && exit -1) && git tag \"v$npm_package_version\" -am \"$MESSAGE\"","our:setup":"npm run our:setup:install","our:setup:install":"npm install","our:test":"npm run our:verify && npm test","our:verify":"npm run our:verify:eslint && npm run our:verify:prettier","our:verify:eslint":"eslint --fix --ignore-pattern '**/*.d.ts' --ignore-pattern '**/vendor/' --ignore-pattern '**/node_modules/' --ext .mjs,.js,.jsx,.ts,.tsx ./source","our:verify:prettier":"prettier --write .","test":"node ./test.cjs"},"boundation":{"sourceModule":false},"eslintConfig":{"extends":["bevry"]},"prettier":{"semi":false,"singleQuote":true,"trailingComma":"all","endOfLine":"lf"},"_id":"@bevry/pluginloader@5.3.0-next.1703874887.55f5f04d37a37048c24d9f3f6c20677a44e67350","readme":"<!-- TITLE/ -->\n\n# @bevry/pluginloader\n\n<!-- /TITLE -->\n\n<!-- BADGES/ -->\n\n<span class=\"badge-githubworkflow\"><a href=\"https://github.com/bevry/pluginloader/actions?query=workflow%3Abevry\" title=\"View the status of this project's GitHub Workflow: bevry\"><img src=\"https://github.com/bevry/pluginloader/workflows/bevry/badge.svg\" alt=\"Status of the GitHub Workflow: bevry\" /></a></span>\n<span class=\"badge-npmversion\"><a href=\"https://npmjs.org/package/@bevry/pluginloader\" title=\"View this project on NPM\"><img src=\"https://img.shields.io/npm/v/@bevry/pluginloader.svg\" alt=\"NPM version\" /></a></span>\n<span class=\"badge-npmdownloads\"><a href=\"https://npmjs.org/package/@bevry/pluginloader\" title=\"View this project on NPM\"><img src=\"https://img.shields.io/npm/dm/@bevry/pluginloader.svg\" alt=\"NPM downloads\" /></a></span>\n<br class=\"badge-separator\" />\n<span class=\"badge-githubsponsors\"><a href=\"https://github.com/sponsors/balupton\" title=\"Donate to this project using GitHub Sponsors\"><img src=\"https://img.shields.io/badge/github-donate-yellow.svg\" alt=\"GitHub Sponsors donate button\" /></a></span>\n<span class=\"badge-thanksdev\"><a href=\"https://thanks.dev/u/gh/bevry\" title=\"Donate to this project using ThanksDev\"><img src=\"https://img.shields.io/badge/thanksdev-donate-yellow.svg\" alt=\"ThanksDev donate button\" /></a></span>\n<span class=\"badge-patreon\"><a href=\"https://patreon.com/bevry\" title=\"Donate to this project using Patreon\"><img src=\"https://img.shields.io/badge/patreon-donate-yellow.svg\" alt=\"Patreon donate button\" /></a></span>\n<span class=\"badge-liberapay\"><a href=\"https://liberapay.com/bevry\" title=\"Donate to this project using Liberapay\"><img src=\"https://img.shields.io/badge/liberapay-donate-yellow.svg\" alt=\"Liberapay donate button\" /></a></span>\n<span class=\"badge-buymeacoffee\"><a href=\"https://buymeacoffee.com/balupton\" title=\"Donate to this project using Buy Me A Coffee\"><img src=\"https://img.shields.io/badge/buy%20me%20a%20coffee-donate-yellow.svg\" alt=\"Buy Me A Coffee donate button\" /></a></span>\n<span class=\"badge-opencollective\"><a href=\"https://opencollective.com/bevry\" title=\"Donate to this project using Open Collective\"><img src=\"https://img.shields.io/badge/open%20collective-donate-yellow.svg\" alt=\"Open Collective donate button\" /></a></span>\n<span class=\"badge-crypto\"><a href=\"https://bevry.me/crypto\" title=\"Donate to this project using Cryptocurrency\"><img src=\"https://img.shields.io/badge/crypto-donate-yellow.svg\" alt=\"crypto donate button\" /></a></span>\n<span class=\"badge-paypal\"><a href=\"https://bevry.me/paypal\" title=\"Donate to this project using Paypal\"><img src=\"https://img.shields.io/badge/paypal-donate-yellow.svg\" alt=\"PayPal donate button\" /></a></span>\n<br class=\"badge-separator\" />\n<span class=\"badge-discord\"><a href=\"https://discord.gg/nQuXddV7VP\" title=\"Join this project's community on Discord\"><img src=\"https://img.shields.io/discord/1147436445783560193?logo=discord&amp;label=discord\" alt=\"Discord server badge\" /></a></span>\n<span class=\"badge-twitch\"><a href=\"https://www.twitch.tv/balupton\" title=\"Join this project's community on Twitch\"><img src=\"https://img.shields.io/twitch/status/balupton?logo=twitch\" alt=\"Twitch community badge\" /></a></span>\n\n<!-- /BADGES -->\n\n<!-- DESCRIPTION/ -->\n\nA class for loading, verifying, and creating plugins. Used by DocPad for years.\n\n<!-- /DESCRIPTION -->\n\n\n## Usage\n\n[Complete API Documentation.](http://master.pluginloader.bevry.surge.sh/docs/)\n\n### Basics\n\nCreate your project:\n\n1. `mkdir my-project`\n1. `cd my-project`\n\nCreate your plugin:\n\n1. `mkdir myplugin`\n1. `cd myplugin`\n1. `npm init`\n1. `index.js` to:\n\n    ```javascript\n    module.exports = function (BasePlugin) {\n        return class MyPlugin extends BasePlugin {\n            constructor(...args) {\n                super(...args)\n                console.log('hello from my plugin')\n            }\n        }\n    }\n    ```\n\n1. `cd ..`\n\nCreate your plugin loader:\n\n1. `mkdir myapp`\n1. `cd myapp`\n1. `npm init`\n1. `index.js` to:\n\n    ```javascript\n    import PluginLoader from '@bevry/pluginloader'\n\n    class BasePlugin {\n        constructor() {\n            console.log('hello from base plugin')\n        }\n    }\n\n    const pluginLoader = new PluginLoader({\n        BasePlugin,\n        pluginPath: require('path').resolve(__dirname, '..', 'myplugin'),\n    })\n    ```\n\n1. `cd ..`\n\nRun the project:\n\n1. `node myapp/index.js`\n\n### Ecosystem\n\n-   [pluginclerk](https://github.com/bevry/pluginclerk) a project for fetching compatible plugins from the npm registry\n-   [docpad-baseplugin](https://github.com/docpad/docpad-baseplugin) the BasePlugin class that DocPad uses\n-   [docpad-plugintester](https://github.com/docpad/docpad-plugintester) testing helpers for DocPad plugins\n\n<!-- INSTALL/ -->\n\n## Install\n\n### [npm](https://npmjs.com \"npm is a package manager for javascript\")\n\n-   Install: `npm install --save @bevry/pluginloader`\n-   Import: `import * as pkg from ('@bevry/pluginloader')`\n-   Require: `const pkg = require('@bevry/pluginloader')`\n\n### [Deno](https://deno.land \"Deno is a secure runtime for JavaScript and TypeScript, it is an alternative for Node.js\")\n\n``` typescript\nimport * as pkg from 'https://unpkg.com/@bevry/pluginloader@^5.3.0/edition-deno/index.ts'\n```\n### [Editions](https://editions.bevry.me \"Editions are the best way to produce and consume packages you care about.\")\n\nThis package is published with the following editions:\n-   `@bevry/pluginloader` aliases `@bevry/pluginloader/index.cjs` which uses the [Editions Autoloader](https://github.com/bevry/editions \"You can use the Editions Autoloader to autoload the appropriate edition for your consumers environment\") to automatically select the correct edition for the consumer's environment\n-   `@bevry/pluginloader/source/index.ts` is [TypeScript](https://www.typescriptlang.org/ \"TypeScript is a typed superset of JavaScript that compiles to plain JavaScript.\") source code with [Import](https://babeljs.io/docs/learn-es2015/#modules \"ECMAScript Modules\") for modules\n-   `@bevry/pluginloader/edition-es2022/index.js` is [TypeScript](https://www.typescriptlang.org/ \"TypeScript is a typed superset of JavaScript that compiles to plain JavaScript.\") compiled against [ES2022](https://en.wikipedia.org/wiki/ES2022 \"ECMAScript 2022\") for [Node.js](https://nodejs.org \"Node.js is a JavaScript runtime built on Chrome's V8 JavaScript engine\") 12 || 14 || 16 || 18 || 20 || 21 with [Require](https://nodejs.org/dist/latest-v5.x/docs/api/modules.html \"Node/CJS Modules\") for modules\n-   `@bevry/pluginloader/edition-es2016/index.js` is [TypeScript](https://www.typescriptlang.org/ \"TypeScript is a typed superset of JavaScript that compiles to plain JavaScript.\") compiled against [ES2016](https://en.wikipedia.org/wiki/ES2016 \"ECMAScript 2016\") for [Node.js](https://nodejs.org \"Node.js is a JavaScript runtime built on Chrome's V8 JavaScript engine\") 6 || 8 || 10 || 12 || 14 || 16 || 18 || 20 || 21 with [Require](https://nodejs.org/dist/latest-v5.x/docs/api/modules.html \"Node/CJS Modules\") for modules\n-   `@bevry/pluginloader/edition-types/index.d.ts` is [TypeScript](https://www.typescriptlang.org/ \"TypeScript is a typed superset of JavaScript that compiles to plain JavaScript.\") compiled Types with [Import](https://babeljs.io/docs/learn-es2015/#modules \"ECMAScript Modules\") for modules\n\n<!-- /INSTALL -->\n\n<!-- HISTORY/ -->\n\n## History\n\n[Discover the release history by heading on over to the `HISTORY.md` file.](https://github.com/bevry/pluginloader/blob/HEAD/HISTORY.md#files)\n\n<!-- /HISTORY -->\n\n<!-- BACKERS/ -->\n\n## Backers\n\n### Code\n\n[Discover how to contribute via the `CONTRIBUTING.md` file.](https://github.com/bevry/pluginloader/blob/HEAD/CONTRIBUTING.md#files)\n\n#### Authors\n\n-   [Benjamin Lupton](https://balupton.com) — Accelerating collaborative wisdom.\n\n#### Maintainers\n\n-   [Benjamin Lupton](https://balupton.com) — Accelerating collaborative wisdom.\n\n#### Contributors\n\n-   [Benjamin Lupton](https://github.com/balupton) — [view contributions](https://github.com/bevry/pluginloader/commits?author=balupton \"View the GitHub contributions of Benjamin Lupton on repository bevry/pluginloader\")\n\n### Finances\n\n<span class=\"badge-githubsponsors\"><a href=\"https://github.com/sponsors/balupton\" title=\"Donate to this project using GitHub Sponsors\"><img src=\"https://img.shields.io/badge/github-donate-yellow.svg\" alt=\"GitHub Sponsors donate button\" /></a></span>\n<span class=\"badge-thanksdev\"><a href=\"https://thanks.dev/u/gh/bevry\" title=\"Donate to this project using ThanksDev\"><img src=\"https://img.shields.io/badge/thanksdev-donate-yellow.svg\" alt=\"ThanksDev donate button\" /></a></span>\n<span class=\"badge-patreon\"><a href=\"https://patreon.com/bevry\" title=\"Donate to this project using Patreon\"><img src=\"https://img.shields.io/badge/patreon-donate-yellow.svg\" alt=\"Patreon donate button\" /></a></span>\n<span class=\"badge-liberapay\"><a href=\"https://liberapay.com/bevry\" title=\"Donate to this project using Liberapay\"><img src=\"https://img.shields.io/badge/liberapay-donate-yellow.svg\" alt=\"Liberapay donate button\" /></a></span>\n<span class=\"badge-buymeacoffee\"><a href=\"https://buymeacoffee.com/balupton\" title=\"Donate to this project using Buy Me A Coffee\"><img src=\"https://img.shields.io/badge/buy%20me%20a%20coffee-donate-yellow.svg\" alt=\"Buy Me A Coffee donate button\" /></a></span>\n<span class=\"badge-opencollective\"><a href=\"https://opencollective.com/bevry\" title=\"Donate to this project using Open Collective\"><img src=\"https://img.shields.io/badge/open%20collective-donate-yellow.svg\" alt=\"Open Collective donate button\" /></a></span>\n<span class=\"badge-crypto\"><a href=\"https://bevry.me/crypto\" title=\"Donate to this project using Cryptocurrency\"><img src=\"https://img.shields.io/badge/crypto-donate-yellow.svg\" alt=\"crypto donate button\" /></a></span>\n<span class=\"badge-paypal\"><a href=\"https://bevry.me/paypal\" title=\"Donate to this project using Paypal\"><img src=\"https://img.shields.io/badge/paypal-donate-yellow.svg\" alt=\"PayPal donate button\" /></a></span>\n\n#### Sponsors\n\n-   [Andrew Nesbitt](https://nesbitt.io) — Software engineer and researcher\n-   [Balsa](https://balsa.com) — We're Balsa, and we're building tools for builders.\n-   [Codecov](https://codecov.io) — Empower developers with tools to improve code quality and testing.\n-   [Poonacha Medappa](https://poonachamedappa.com)\n-   [Rob Morris](https://github.com/Rob-Morris)\n-   [Sentry](https://sentry.io) — Real-time crash reporting for your web apps, mobile apps, and games.\n-   [Syntax](https://syntax.fm) — Syntax Podcast\n\n#### Donors\n\n-   [Andrew Nesbitt](https://nesbitt.io)\n-   [Armen Mkrtchian](https://mogoni.dev)\n-   [Balsa](https://balsa.com)\n-   [Chad](https://opencollective.com/chad8)\n-   [Codecov](https://codecov.io)\n-   [dr.dimitru](https://veliovgroup.com)\n-   [Elliott Ditman](https://elliottditman.com)\n-   [entroniq](https://gitlab.com/entroniq)\n-   [GitHub](https://github.com/about)\n-   [Hunter Beast](https://cryptoquick.com)\n-   [Jean-Luc Geering](https://github.com/jlgeering)\n-   [Michael Duane Mooring](https://mdm.cc)\n-   [Michael Harry Scepaniak](https://michaelscepaniak.com)\n-   [Mohammed Shah](https://github.com/smashah)\n-   [Mr. Henry](https://mrhenry.be)\n-   [Nermal](https://arjunaditya.vercel.app)\n-   [Pleo](https://pleo.io)\n-   [Poonacha Medappa](https://poonachamedappa.com)\n-   [Rob Morris](https://github.com/Rob-Morris)\n-   [Robert de Forest](https://github.com/rdeforest)\n-   [Sentry](https://sentry.io)\n-   [ServieJS](https://github.com/serviejs)\n-   [Skunk Team](https://skunk.team)\n-   [Syntax](https://syntax.fm)\n-   [WriterJohnBuck](https://github.com/WriterJohnBuck)\n\n<!-- /BACKERS -->\n\n<!-- LICENSE/ -->\n\n## License\n\nUnless stated otherwise all works are:\n\n-   Copyright &copy; [Benjamin Lupton](https://balupton.com)\n\nand licensed under:\n\n-   [Artistic License 2.0](http://spdx.org/licenses/Artistic-2.0.html)\n\n<!-- /LICENSE -->\n","readmeFilename":"README.md","gitHead":"55f5f04d37a37048c24d9f3f6c20677a44e67350","_nodeVersion":"20.10.0","_npmVersion":"10.2.3","dist":{"integrity":"sha512-si8A4HojV+GU9CvaP01DmfOYHjYvzH3NRMjfyIOhYRsi7skhlCtES4P+rqvGQMHvfgEV7EOmdN3u0sLpZa7Ung==","shasum":"731decf48ae04551998e0464b58c7b04eac91c0e","tarball":"https://registry.npmjs.org/@bevry/pluginloader/-/pluginloader-5.3.0-next.1703874887.55f5f04d37a37048c24d9f3f6c20677a44e67350.tgz","fileCount":14,"unpackedSize":68715,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDmeIX1M/1rH/LN+5V1YjvWdotgxTABDNaie43B+0fXWgIhAJpGffl5CvXdC447s8SNYIK380W1EoReiZEEG1Kb+9Er"}]},"_npmUser":{"name":"bevryme","email":"us@bevry.me"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/pluginloader_5.3.0-next.1703874887.55f5f04d37a37048c24d9f3f6c20677a44e67350_1703874909205_0.2981552086681405"},"_hasShrinkwrap":false},"5.3.0":{"name":"@bevry/pluginloader","version":"5.3.0","license":"Artistic-2.0","description":"A class for loading, verifying, and creating plugins. Used by DocPad for years.","homepage":"https://github.com/bevry/pluginloader","funding":"https://bevry.me/fund","repository":{"type":"git","url":"git+https://github.com/bevry/pluginloader.git"},"bugs":{"url":"https://github.com/bevry/pluginloader/issues"},"keywords":["bevry","deno","deno-edition","deno-entry","denoland","docpad","es2016","es2022","loader","node","plugin","plugins","typed","types","typescript"],"badges":{"list":["githubworkflow","npmversion","npmdownloads","---","githubsponsors","thanksdev","patreon","liberapay","buymeacoffee","opencollective","crypto","paypal","---","discord","twitch"],"config":{"githubWorkflow":"bevry","githubSponsorsUsername":"balupton","thanksdevGithubUsername":"bevry","buymeacoffeeUsername":"balupton","cryptoURL":"https://bevry.me/crypto","flattrUsername":"balupton","liberapayUsername":"bevry","opencollectiveUsername":"bevry","patreonUsername":"bevry","paypalURL":"https://bevry.me/paypal","wishlistURL":"https://bevry.me/wishlist","discordServerID":"1147436445783560193","discordServerInvite":"nQuXddV7VP","twitchUsername":"balupton","githubUsername":"bevry","githubRepository":"pluginloader","githubSlug":"bevry/pluginloader","npmPackageName":"@bevry/pluginloader"}},"author":{"name":"Benjamin Lupton","email":"b@lupton.cc","url":"https://balupton.com"},"authors":["Benjamin Lupton <b@lupton.cc> (https://balupton.com) (https://github.com/balupton): Accelerating collaborative wisdom."],"maintainers":[{"name":"bevryme","email":"us@bevry.me"}],"contributors":[{"name":"Benjamin Lupton","email":"b@lupton.cc","url":"https://balupton.com"}],"sponsors":["Andrew Nesbitt (https://nesbitt.io) (https://github.com/andrew): Software engineer and researcher","Balsa <hello@balsa.com> (https://balsa.com) (https://github.com/balsa): We're Balsa, and we're building tools for builders.","Codecov <hello-codecov@sentry.io> (https://codecov.io) (https://github.com/codecov): Empower developers with tools to improve code quality and testing.","Poonacha Medappa (https://poonachamedappa.com) (https://github.com/km-Poonacha)","Rob Morris <rob@prismatik.com.au> (https://github.com/Rob-Morris)","Sentry (https://sentry.io) (https://github.com/getsentry): Real-time crash reporting for your web apps, mobile apps, and games.","Syntax <scott@syntax.fm> (https://syntax.fm) (https://github.com/syntaxfm): Syntax Podcast"],"donors":["Andrew Nesbitt (https://nesbitt.io) (https://github.com/andrew)","Armen Mkrtchian (https://mogoni.dev) (https://github.com/Armenm)","Balsa <hello@balsa.com> (https://balsa.com) (https://github.com/balsa)","Chad (https://opencollective.com/chad8)","Codecov <hello-codecov@sentry.io> (https://codecov.io) (https://github.com/codecov)","dr.dimitru (https://veliovgroup.com) (https://github.com/dr-dimitru)","Elliott Ditman (https://elliottditman.com) (https://github.com/elliottditman)","entroniq (https://gitlab.com/entroniq) (https://thanks.dev/d/gl/entroniq)","GitHub (https://github.com/about) (https://github.com/github)","Hunter Beast (https://cryptoquick.com) (https://github.com/cryptoquick)","Jean-Luc Geering (https://github.com/jlgeering) (https://opencollective.com/jlgeering) (https://twitter.com/jlgeering)","Michael Duane Mooring (https://mdm.cc) (https://github.com/mikeumus) (https://opencollective.com/mikeumus) (https://twitter.com/mikeumus)","Michael Harry Scepaniak <mhs1.sys@gmail.com> (https://michaelscepaniak.com) (https://github.com/hispanic)","Mohammed Shah <shah@idk.uno> (https://github.com/smashah) (https://thanks.dev/d/gh/smashah) (https://twitter.com/smashah)","Mr. Henry <hello@mrhenry.be> (https://mrhenry.be) (https://github.com/mrhenry)","Nermal <nermalcat69@skiff.com> (https://arjunaditya.vercel.app) (https://github.com/nermalcat69)","Pleo (https://pleo.io) (https://github.com/pleo-io)","Poonacha Medappa (https://poonachamedappa.com) (https://github.com/km-Poonacha)","Rob Morris <rob@prismatik.com.au> (https://github.com/Rob-Morris)","Robert de Forest <guitar.robot@gmail.com> (https://github.com/rdeforest)","Sentry (https://sentry.io) (https://github.com/getsentry)","ServieJS (https://github.com/serviejs) (https://thanks.dev/d/gh/serviejs)","Skunk Team (https://skunk.team) (https://github.com/skunkteam)","Syntax <scott@syntax.fm> (https://syntax.fm) (https://github.com/syntaxfm)","WriterJohnBuck (https://github.com/WriterJohnBuck)"],"engines":{"node":">=6"},"editions":[{"description":"TypeScript source code with Import for modules","directory":"source","entry":"index.ts","tags":["source","typescript","import"],"engines":false},{"description":"TypeScript compiled against ES2022 for Node.js 12 || 14 || 16 || 18 || 20 || 21 with Require for modules","directory":"edition-es2022","entry":"index.js","tags":["compiled","javascript","es2022","require"],"engines":{"node":"12 || 14 || 16 || 18 || 20 || 21","browsers":false}},{"description":"TypeScript compiled against ES2016 for Node.js 6 || 8 || 10 || 12 || 14 || 16 || 18 || 20 || 21 with Require for modules","directory":"edition-es2016","entry":"index.js","tags":["compiled","javascript","es2016","require"],"engines":{"node":"6 || 8 || 10 || 12 || 14 || 16 || 18 || 20 || 21","browsers":false}},{"description":"TypeScript compiled Types with Import for modules","directory":"edition-types","entry":"index.d.ts","tags":["compiled","types","import"],"engines":false}],"types":"edition-types/index.d.ts","type":"module","main":"index.cjs","deno":"edition-deno/index.ts","dependencies":{"editions":"^6.21.0","errlop":"^8.4.0","typechecker":"^9.3.0","version-range":"^4.13.0"},"devDependencies":{"@types/node":"^20.10.5","@typescript-eslint/eslint-plugin":"^6.16.0","@typescript-eslint/parser":"^6.16.0","assert-helpers":"^11.12.0","eslint":"^8.56.0","eslint-config-bevry":"^5.3.0","eslint-config-prettier":"^9.1.0","eslint-plugin-prettier":"^5.1.2","filedirname":"^3.4.0","kava":"^7.8.0","prettier":"^3.1.1","projectz":"^4.1.1","typedoc":"^0.25.4","typescript":"5.3.3","valid-directory":"^4.8.0"},"scripts":{"our:clean":"rm -rf ./docs ./edition* ./es2015 ./es5 ./out ./.next","our:compile":"npm run our:compile:edition-es2016 && npm run our:compile:edition-es2022 && npm run our:compile:edition-types","our:compile:edition-es2016":"tsc --module commonjs --target ES2016 --outDir ./edition-es2016 --project tsconfig.json && ( test ! -d edition-es2016/source || ( mv edition-es2016/source edition-temp && rm -rf edition-es2016 && mv edition-temp edition-es2016 ) ) && printf '%s' '{\"type\": \"commonjs\"}' > edition-es2016/package.json","our:compile:edition-es2022":"tsc --module commonjs --target ES2022 --outDir ./edition-es2022 --project tsconfig.json && ( test ! -d edition-es2022/source || ( mv edition-es2022/source edition-temp && rm -rf edition-es2022 && mv edition-temp edition-es2022 ) ) && printf '%s' '{\"type\": \"commonjs\"}' > edition-es2022/package.json","our:compile:edition-types":"tsc --emitDeclarationOnly --declaration --declarationMap --declarationDir ./edition-types --project tsconfig.json && ( test ! -d edition-types/source || ( mv edition-types/source edition-temp && rm -rf edition-types && mv edition-temp edition-types ) )","our:deploy":"printf '%s\n' 'no need for this project'","our:meta":"npm run our:meta:docs && npm run our:meta:projectz","our:meta:docs":"npm run our:meta:docs:typedoc","our:meta:docs:typedoc":"rm -rf ./docs && typedoc --exclude '**/+(*test*|node_modules)' --excludeExternals --out ./docs ./source","our:meta:projectz":"projectz --offline","our:release":"npm run our:release:prepare && npm run our:release:check-changelog && npm run our:release:check-dirty && npm run our:release:tag && npm run our:release:push","our:release:check-changelog":"cat ./HISTORY.md | grep \"v$npm_package_version\" || (printf '%s\n' \"add a changelog entry for v$npm_package_version\" && exit -1)","our:release:check-dirty":"git diff --exit-code","our:release:prepare":"npm run our:clean && npm run our:compile && npm run our:test && npm run our:meta","our:release:push":"git push origin && git push origin --tags","our:release:tag":"export MESSAGE=$(cat ./HISTORY.md | sed -n \"/## v$npm_package_version/,/##/p\" | sed 's/## //' | awk 'NR>1{print buf}{buf = $0}') && test \"$MESSAGE\" || (printf '%s\n' 'proper changelog entry not found' && exit -1) && git tag \"v$npm_package_version\" -am \"$MESSAGE\"","our:setup":"npm run our:setup:install","our:setup:install":"npm install","our:test":"npm run our:verify && npm test","our:verify":"npm run our:verify:eslint && npm run our:verify:prettier","our:verify:eslint":"eslint --fix --ignore-pattern '**/*.d.ts' --ignore-pattern '**/vendor/' --ignore-pattern '**/node_modules/' --ext .mjs,.js,.jsx,.ts,.tsx ./source","our:verify:prettier":"prettier --write .","test":"node ./test.cjs"},"boundation":{"sourceModule":false},"eslintConfig":{"extends":["bevry"]},"prettier":{"semi":false,"singleQuote":true,"trailingComma":"all","endOfLine":"lf"},"_id":"@bevry/pluginloader@5.3.0","gitHead":"55f5f04d37a37048c24d9f3f6c20677a44e67350","_nodeVersion":"20.10.0","_npmVersion":"10.2.3","dist":{"integrity":"sha512-bOjCZmQzRCgoF2dzWNX5V6WneIUiQ4bxpi2OdhjSWPPoCqUf2VS2nxY8qb5QychAl/4wsY0xxZEPfmKDGwxSlQ==","shasum":"d537b85268c3993c105c12a0a043bd9d801f6aa8","tarball":"https://registry.npmjs.org/@bevry/pluginloader/-/pluginloader-5.3.0.tgz","fileCount":14,"unpackedSize":68658,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICiDei+BUEzZDko/DCNV+7BxkAI8vtdLz/AO+xhSUZccAiEA1qKpBxYwFw1uXnPGTBIqGPdcIUM59+uLN0bYcoVBIQY="}]},"_npmUser":{"name":"bevryme","email":"us@bevry.me"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/pluginloader_5.3.0_1703874915235_0.8950539707598404"},"_hasShrinkwrap":false}},"time":{"created":"2018-09-04T13:43:36.677Z","1.0.0":"2018-09-04T13:43:36.949Z","modified":"2023-12-29T18:35:15.577Z","1.1.0":"2018-09-07T22:30:15.937Z","1.1.1":"2018-09-08T08:20:55.841Z","1.1.2":"2018-10-01T09:24:32.653Z","2.0.0-next.1575664901.7925f80d5eaa90224f07ef037343cc7b3f2dfee7":"2019-12-06T20:41:43.246Z","2.0.0":"2019-12-06T20:42:46.587Z","2.1.0":"2019-12-09T18:47:47.217Z","2.1.0-next.1575917292.60421211a2add43d06b9eff5d7e964ed6674d728":"2019-12-09T18:48:13.580Z","2.1.0-next.1576090672.bc30e0d45617cfa4a6a02356515a8eae89d712d0":"2019-12-11T18:57:53.876Z","3.0.0-next.1576634054.32f1f98547c9c1a74b70b6bbf504cb9fd97ded8f":"2019-12-18T01:54:16.414Z","3.0.0":"2019-12-18T01:55:20.536Z","4.0.0-next.1589184740.9182d5e1d1aba91bda3889008cb1ac699c08715b":"2020-05-11T08:12:22.030Z","4.0.0":"2020-05-11T08:13:30.977Z","4.1.0-next.1590005359.76fe139f6462956b85c5b598de5870933de648a6":"2020-05-20T20:09:21.502Z","4.1.0":"2020-05-20T20:10:38.229Z","4.2.0-next.1590061662.d2dc5858232aabbee10e11b73da890791f4a7b2a":"2020-05-21T11:47:43.545Z","4.2.0":"2020-05-21T11:48:55.583Z","4.3.0-next.1590079583.72581ebc07fe5da547081ad5e387e889059448df":"2020-05-21T16:46:25.127Z","4.3.0":"2020-05-21T16:47:32.313Z","4.4.0-next.1591784384.40b70a637dea8300a5bc8256781024522a65f6c7":"2020-06-10T10:19:46.134Z","4.4.0":"2020-06-10T10:21:04.087Z","4.5.0-next.1591800380.51ef0c743ae220ac4a1b301b473bc600cd592314":"2020-06-10T14:46:21.540Z","4.5.0":"2020-06-10T14:47:30.401Z","4.5.0-next.1592598242.aa9cb088d7b0a262e4719668b239308da2cb5405":"2020-06-19T20:24:04.219Z","4.5.0-next.1592598477.80d2d5a4d96e0beadec09e2681a03653e0e16b1e":"2020-06-19T20:27:59.108Z","4.6.0-next.1592632909.510c6ee729f4e24f7e4b3719d48f18a0c4929522":"2020-06-20T06:01:51.308Z","4.6.0":"2020-06-20T06:03:02.518Z","4.7.0-next.1592720958.8f56482d67dd32861117dde0cbdbe3ea0a2929f5":"2020-06-21T06:29:20.050Z","4.7.0":"2020-06-21T06:30:34.539Z","4.8.0-next.1592762938.a2e3adf8847e4c15f0ef5349e5bd6d2da4a647d7":"2020-06-21T18:09:00.079Z","4.8.0":"2020-06-21T18:10:14.021Z","4.9.0-next.1593058626.f2d8d3525b1e4fa28c848b4f4a79733dd51cea44":"2020-06-25T04:17:08.034Z","4.9.0":"2020-06-25T04:18:20.730Z","4.10.0-next.1597385751.a1b385b5caf538ee15f5cfb68c9afe0eec1d66df":"2020-08-14T06:15:53.724Z","4.10.0":"2020-08-14T06:17:10.589Z","4.11.0-next.1597700324.84e7b1d7d022ab68c4c8c9d7fd12b41392b52df6":"2020-08-17T21:38:46.732Z","4.11.0-next.1597700407.c6eb071671da4b8ab0a46dd5e136f9fa675c714b":"2020-08-17T21:40:09.233Z","4.11.0":"2020-08-17T21:40:24.513Z","4.11.0-next.1598189738.16623181352ec1637e3de3c074e4bf6b082d1847":"2020-08-23T13:35:39.455Z","4.11.0-next.1598783510.b0ea3629dda6fbdfbe706c19dd910f64f63183e1":"2020-08-30T10:31:51.911Z","4.11.0-next.1599076969.b2bd37e07fbb99f9fb3c6aedab178187c86b9bd4":"2020-09-02T20:02:51.267Z","4.11.0-next.1599397448.8cb75bee7ab089761a5506e442f6f3d1a5cd2b44":"2020-09-06T13:04:09.878Z","4.11.0-next.1599399196.086e7d152a6f741a39652ed709817d94bebe8472":"2020-09-06T13:33:18.283Z","4.11.0-next.1599998859.7be69c8a5dbf97d725d33920052e65e1cddcd97b":"2020-09-13T12:07:41.415Z","4.11.0-next.1600606887.7453d70e546f286aab45ad7580ef3e3594785319":"2020-09-20T13:01:28.647Z","4.11.0-next.1601210864.0ef206c28a2c262ebfe08b9d66e6998b6109b6c6":"2020-09-27T12:47:46.408Z","4.11.0-next.1602410985.ec0281e3ece6cb6a46cee8c1a6676083c3d9a66e":"2020-10-11T10:09:47.007Z","4.11.0-next.1603017599.e1d3f91bfcb877664a83fdc4afa8408cfd15df3b":"2020-10-18T10:40:01.112Z","4.11.0-next.1603628094.708a16c4b435e8ca3804e25c8b6f9580facb3612":"2020-10-25T12:14:56.495Z","4.11.0-next.1604238395.f8b5491fb381675d8ba665d4d3d7daadaee96786":"2020-11-01T13:46:37.236Z","4.12.0":"2023-11-19T23:20:14.480Z","4.12.0-next.1700436019.c8bb9bddb4579326954e85f3eda36536665b1c67":"2023-11-19T23:20:20.782Z","4.13.0":"2023-11-21T12:46:57.854Z","4.13.0-next.1700570893.9bcec341a81e3231ddb5edc8fca40f31ea5af305":"2023-11-21T12:48:14.978Z","5.0.0-next.1700857352.1427218d71ab9a6930defc6e69b89765140ec68b":"2023-11-24T20:22:33.713Z","5.0.0":"2023-11-24T20:22:37.612Z","5.1.0-next.1701824349.c47ae6463b8607877cbc3389067dda935344cd3f":"2023-12-06T00:59:11.479Z","5.1.0":"2023-12-06T00:59:37.868Z","5.2.0-next.1703700467.deefed5a07a5894aab5df056495c79a66a5534d2":"2023-12-27T18:07:49.528Z","5.2.0":"2023-12-27T18:09:11.046Z","5.3.0-next.1703874887.55f5f04d37a37048c24d9f3f6c20677a44e67350":"2023-12-29T18:35:09.428Z","5.3.0":"2023-12-29T18:35:15.407Z"},"maintainers":[{"name":"bevryme","email":"us@bevry.me"}],"description":"A class for loading, verifying, and creating plugins. Used by DocPad for years.","homepage":"https://github.com/bevry/pluginloader","keywords":["bevry","deno","deno-edition","deno-entry","denoland","docpad","es2016","es2022","loader","node","plugin","plugins","typed","types","typescript"],"repository":{"type":"git","url":"git+https://github.com/bevry/pluginloader.git"},"contributors":[{"name":"Benjamin Lupton","email":"b@lupton.cc","url":"https://balupton.com"}],"author":{"name":"Benjamin Lupton","email":"b@lupton.cc","url":"https://balupton.com"},"bugs":{"url":"https://github.com/bevry/pluginloader/issues"},"license":"Artistic-2.0","readme":"<!-- TITLE/ -->\n\n# @bevry/pluginloader\n\n<!-- /TITLE -->\n\n<!-- BADGES/ -->\n\n<span class=\"badge-githubworkflow\"><a href=\"https://github.com/bevry/pluginloader/actions?query=workflow%3Abevry\" title=\"View the status of this project's GitHub Workflow: bevry\"><img src=\"https://github.com/bevry/pluginloader/workflows/bevry/badge.svg\" alt=\"Status of the GitHub Workflow: bevry\" /></a></span>\n<span class=\"badge-npmversion\"><a href=\"https://npmjs.org/package/@bevry/pluginloader\" title=\"View this project on NPM\"><img src=\"https://img.shields.io/npm/v/@bevry/pluginloader.svg\" alt=\"NPM version\" /></a></span>\n<span class=\"badge-npmdownloads\"><a href=\"https://npmjs.org/package/@bevry/pluginloader\" title=\"View this project on NPM\"><img src=\"https://img.shields.io/npm/dm/@bevry/pluginloader.svg\" alt=\"NPM downloads\" /></a></span>\n<br class=\"badge-separator\" />\n<span class=\"badge-githubsponsors\"><a href=\"https://github.com/sponsors/balupton\" title=\"Donate to this project using GitHub Sponsors\"><img src=\"https://img.shields.io/badge/github-donate-yellow.svg\" alt=\"GitHub Sponsors donate button\" /></a></span>\n<span class=\"badge-thanksdev\"><a href=\"https://thanks.dev/u/gh/bevry\" title=\"Donate to this project using ThanksDev\"><img src=\"https://img.shields.io/badge/thanksdev-donate-yellow.svg\" alt=\"ThanksDev donate button\" /></a></span>\n<span class=\"badge-patreon\"><a href=\"https://patreon.com/bevry\" title=\"Donate to this project using Patreon\"><img src=\"https://img.shields.io/badge/patreon-donate-yellow.svg\" alt=\"Patreon donate button\" /></a></span>\n<span class=\"badge-liberapay\"><a href=\"https://liberapay.com/bevry\" title=\"Donate to this project using Liberapay\"><img src=\"https://img.shields.io/badge/liberapay-donate-yellow.svg\" alt=\"Liberapay donate button\" /></a></span>\n<span class=\"badge-buymeacoffee\"><a href=\"https://buymeacoffee.com/balupton\" title=\"Donate to this project using Buy Me A Coffee\"><img src=\"https://img.shields.io/badge/buy%20me%20a%20coffee-donate-yellow.svg\" alt=\"Buy Me A Coffee donate button\" /></a></span>\n<span class=\"badge-opencollective\"><a href=\"https://opencollective.com/bevry\" title=\"Donate to this project using Open Collective\"><img src=\"https://img.shields.io/badge/open%20collective-donate-yellow.svg\" alt=\"Open Collective donate button\" /></a></span>\n<span class=\"badge-crypto\"><a href=\"https://bevry.me/crypto\" title=\"Donate to this project using Cryptocurrency\"><img src=\"https://img.shields.io/badge/crypto-donate-yellow.svg\" alt=\"crypto donate button\" /></a></span>\n<span class=\"badge-paypal\"><a href=\"https://bevry.me/paypal\" title=\"Donate to this project using Paypal\"><img src=\"https://img.shields.io/badge/paypal-donate-yellow.svg\" alt=\"PayPal donate button\" /></a></span>\n<br class=\"badge-separator\" />\n<span class=\"badge-discord\"><a href=\"https://discord.gg/nQuXddV7VP\" title=\"Join this project's community on Discord\"><img src=\"https://img.shields.io/discord/1147436445783560193?logo=discord&amp;label=discord\" alt=\"Discord server badge\" /></a></span>\n<span class=\"badge-twitch\"><a href=\"https://www.twitch.tv/balupton\" title=\"Join this project's community on Twitch\"><img src=\"https://img.shields.io/twitch/status/balupton?logo=twitch\" alt=\"Twitch community badge\" /></a></span>\n\n<!-- /BADGES -->\n\n<!-- DESCRIPTION/ -->\n\nA class for loading, verifying, and creating plugins. Used by DocPad for years.\n\n<!-- /DESCRIPTION -->\n\n\n## Usage\n\n[Complete API Documentation.](http://master.pluginloader.bevry.surge.sh/docs/)\n\n### Basics\n\nCreate your project:\n\n1. `mkdir my-project`\n1. `cd my-project`\n\nCreate your plugin:\n\n1. `mkdir myplugin`\n1. `cd myplugin`\n1. `npm init`\n1. `index.js` to:\n\n    ```javascript\n    module.exports = function (BasePlugin) {\n        return class MyPlugin extends BasePlugin {\n            constructor(...args) {\n                super(...args)\n                console.log('hello from my plugin')\n            }\n        }\n    }\n    ```\n\n1. `cd ..`\n\nCreate your plugin loader:\n\n1. `mkdir myapp`\n1. `cd myapp`\n1. `npm init`\n1. `index.js` to:\n\n    ```javascript\n    import PluginLoader from '@bevry/pluginloader'\n\n    class BasePlugin {\n        constructor() {\n            console.log('hello from base plugin')\n        }\n    }\n\n    const pluginLoader = new PluginLoader({\n        BasePlugin,\n        pluginPath: require('path').resolve(__dirname, '..', 'myplugin'),\n    })\n    ```\n\n1. `cd ..`\n\nRun the project:\n\n1. `node myapp/index.js`\n\n### Ecosystem\n\n-   [pluginclerk](https://github.com/bevry/pluginclerk) a project for fetching compatible plugins from the npm registry\n-   [docpad-baseplugin](https://github.com/docpad/docpad-baseplugin) the BasePlugin class that DocPad uses\n-   [docpad-plugintester](https://github.com/docpad/docpad-plugintester) testing helpers for DocPad plugins\n\n<!-- INSTALL/ -->\n\n## Install\n\n### [npm](https://npmjs.com \"npm is a package manager for javascript\")\n\n-   Install: `npm install --save @bevry/pluginloader`\n-   Import: `import * as pkg from ('@bevry/pluginloader')`\n-   Require: `const pkg = require('@bevry/pluginloader')`\n\n### [Deno](https://deno.land \"Deno is a secure runtime for JavaScript and TypeScript, it is an alternative for Node.js\")\n\n``` typescript\nimport * as pkg from 'https://unpkg.com/@bevry/pluginloader@^5.3.0/edition-deno/index.ts'\n```\n### [Editions](https://editions.bevry.me \"Editions are the best way to produce and consume packages you care about.\")\n\nThis package is published with the following editions:\n-   `@bevry/pluginloader` aliases `@bevry/pluginloader/index.cjs` which uses the [Editions Autoloader](https://github.com/bevry/editions \"You can use the Editions Autoloader to autoload the appropriate edition for your consumers environment\") to automatically select the correct edition for the consumer's environment\n-   `@bevry/pluginloader/source/index.ts` is [TypeScript](https://www.typescriptlang.org/ \"TypeScript is a typed superset of JavaScript that compiles to plain JavaScript.\") source code with [Import](https://babeljs.io/docs/learn-es2015/#modules \"ECMAScript Modules\") for modules\n-   `@bevry/pluginloader/edition-es2022/index.js` is [TypeScript](https://www.typescriptlang.org/ \"TypeScript is a typed superset of JavaScript that compiles to plain JavaScript.\") compiled against [ES2022](https://en.wikipedia.org/wiki/ES2022 \"ECMAScript 2022\") for [Node.js](https://nodejs.org \"Node.js is a JavaScript runtime built on Chrome's V8 JavaScript engine\") 12 || 14 || 16 || 18 || 20 || 21 with [Require](https://nodejs.org/dist/latest-v5.x/docs/api/modules.html \"Node/CJS Modules\") for modules\n-   `@bevry/pluginloader/edition-es2016/index.js` is [TypeScript](https://www.typescriptlang.org/ \"TypeScript is a typed superset of JavaScript that compiles to plain JavaScript.\") compiled against [ES2016](https://en.wikipedia.org/wiki/ES2016 \"ECMAScript 2016\") for [Node.js](https://nodejs.org \"Node.js is a JavaScript runtime built on Chrome's V8 JavaScript engine\") 6 || 8 || 10 || 12 || 14 || 16 || 18 || 20 || 21 with [Require](https://nodejs.org/dist/latest-v5.x/docs/api/modules.html \"Node/CJS Modules\") for modules\n-   `@bevry/pluginloader/edition-types/index.d.ts` is [TypeScript](https://www.typescriptlang.org/ \"TypeScript is a typed superset of JavaScript that compiles to plain JavaScript.\") compiled Types with [Import](https://babeljs.io/docs/learn-es2015/#modules \"ECMAScript Modules\") for modules\n\n<!-- /INSTALL -->\n\n<!-- HISTORY/ -->\n\n## History\n\n[Discover the release history by heading on over to the `HISTORY.md` file.](https://github.com/bevry/pluginloader/blob/HEAD/HISTORY.md#files)\n\n<!-- /HISTORY -->\n\n<!-- BACKERS/ -->\n\n## Backers\n\n### Code\n\n[Discover how to contribute via the `CONTRIBUTING.md` file.](https://github.com/bevry/pluginloader/blob/HEAD/CONTRIBUTING.md#files)\n\n#### Authors\n\n-   [Benjamin Lupton](https://balupton.com) — Accelerating collaborative wisdom.\n\n#### Maintainers\n\n-   [Benjamin Lupton](https://balupton.com) — Accelerating collaborative wisdom.\n\n#### Contributors\n\n-   [Benjamin Lupton](https://github.com/balupton) — [view contributions](https://github.com/bevry/pluginloader/commits?author=balupton \"View the GitHub contributions of Benjamin Lupton on repository bevry/pluginloader\")\n\n### Finances\n\n<span class=\"badge-githubsponsors\"><a href=\"https://github.com/sponsors/balupton\" title=\"Donate to this project using GitHub Sponsors\"><img src=\"https://img.shields.io/badge/github-donate-yellow.svg\" alt=\"GitHub Sponsors donate button\" /></a></span>\n<span class=\"badge-thanksdev\"><a href=\"https://thanks.dev/u/gh/bevry\" title=\"Donate to this project using ThanksDev\"><img src=\"https://img.shields.io/badge/thanksdev-donate-yellow.svg\" alt=\"ThanksDev donate button\" /></a></span>\n<span class=\"badge-patreon\"><a href=\"https://patreon.com/bevry\" title=\"Donate to this project using Patreon\"><img src=\"https://img.shields.io/badge/patreon-donate-yellow.svg\" alt=\"Patreon donate button\" /></a></span>\n<span class=\"badge-liberapay\"><a href=\"https://liberapay.com/bevry\" title=\"Donate to this project using Liberapay\"><img src=\"https://img.shields.io/badge/liberapay-donate-yellow.svg\" alt=\"Liberapay donate button\" /></a></span>\n<span class=\"badge-buymeacoffee\"><a href=\"https://buymeacoffee.com/balupton\" title=\"Donate to this project using Buy Me A Coffee\"><img src=\"https://img.shields.io/badge/buy%20me%20a%20coffee-donate-yellow.svg\" alt=\"Buy Me A Coffee donate button\" /></a></span>\n<span class=\"badge-opencollective\"><a href=\"https://opencollective.com/bevry\" title=\"Donate to this project using Open Collective\"><img src=\"https://img.shields.io/badge/open%20collective-donate-yellow.svg\" alt=\"Open Collective donate button\" /></a></span>\n<span class=\"badge-crypto\"><a href=\"https://bevry.me/crypto\" title=\"Donate to this project using Cryptocurrency\"><img src=\"https://img.shields.io/badge/crypto-donate-yellow.svg\" alt=\"crypto donate button\" /></a></span>\n<span class=\"badge-paypal\"><a href=\"https://bevry.me/paypal\" title=\"Donate to this project using Paypal\"><img src=\"https://img.shields.io/badge/paypal-donate-yellow.svg\" alt=\"PayPal donate button\" /></a></span>\n\n#### Sponsors\n\n-   [Andrew Nesbitt](https://nesbitt.io) — Software engineer and researcher\n-   [Balsa](https://balsa.com) — We're Balsa, and we're building tools for builders.\n-   [Codecov](https://codecov.io) — Empower developers with tools to improve code quality and testing.\n-   [Poonacha Medappa](https://poonachamedappa.com)\n-   [Rob Morris](https://github.com/Rob-Morris)\n-   [Sentry](https://sentry.io) — Real-time crash reporting for your web apps, mobile apps, and games.\n-   [Syntax](https://syntax.fm) — Syntax Podcast\n\n#### Donors\n\n-   [Andrew Nesbitt](https://nesbitt.io)\n-   [Armen Mkrtchian](https://mogoni.dev)\n-   [Balsa](https://balsa.com)\n-   [Chad](https://opencollective.com/chad8)\n-   [Codecov](https://codecov.io)\n-   [dr.dimitru](https://veliovgroup.com)\n-   [Elliott Ditman](https://elliottditman.com)\n-   [entroniq](https://gitlab.com/entroniq)\n-   [GitHub](https://github.com/about)\n-   [Hunter Beast](https://cryptoquick.com)\n-   [Jean-Luc Geering](https://github.com/jlgeering)\n-   [Michael Duane Mooring](https://mdm.cc)\n-   [Michael Harry Scepaniak](https://michaelscepaniak.com)\n-   [Mohammed Shah](https://github.com/smashah)\n-   [Mr. Henry](https://mrhenry.be)\n-   [Nermal](https://arjunaditya.vercel.app)\n-   [Pleo](https://pleo.io)\n-   [Poonacha Medappa](https://poonachamedappa.com)\n-   [Rob Morris](https://github.com/Rob-Morris)\n-   [Robert de Forest](https://github.com/rdeforest)\n-   [Sentry](https://sentry.io)\n-   [ServieJS](https://github.com/serviejs)\n-   [Skunk Team](https://skunk.team)\n-   [Syntax](https://syntax.fm)\n-   [WriterJohnBuck](https://github.com/WriterJohnBuck)\n\n<!-- /BACKERS -->\n\n<!-- LICENSE/ -->\n\n## License\n\nUnless stated otherwise all works are:\n\n-   Copyright &copy; [Benjamin Lupton](https://balupton.com)\n\nand licensed under:\n\n-   [Artistic License 2.0](http://spdx.org/licenses/Artistic-2.0.html)\n\n<!-- /LICENSE -->\n","readmeFilename":"README.md"}