From 2290a148bf68bf9b6edc166f4a4dc25d4ff7b803 Mon Sep 17 00:00:00 2001 From: Owen Melbourne Date: Mon, 19 Aug 2019 22:09:51 +0100 Subject: [PATCH] =?UTF-8?q?=F0=9F=94=A8=20WIP?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/Checkers/OpenGraph.php | 37 ++ app/Checkers/Robots.php | 1 - app/Checkers/Uptime.php | 1 - .../Commands/OpenGraphCheckCommand.php | 49 +++ .../Commands/ScanCertificateCommand.php | 12 +- app/Console/Commands/ScanDnsCommand.php | 10 +- app/Console/Commands/ScanOpenGraphCommand.php | 48 +++ app/Console/Commands/ScanRobotsCommand.php | 10 +- app/Console/Commands/ScanUptimeCommand.php | 10 +- app/Console/Kernel.php | 1 + app/HasOpenGraph.php | 11 + app/Http/Controllers/OpenGraphController.php | 25 ++ app/Jobs/OpenGraphCheck.php | 42 ++ app/OpenGraphScan.php | 15 + app/Website.php | 1 + composer.json | 1 + composer.lock | 111 +++++- ...9_202911_create_open_graph_scans_table.php | 37 ++ public/favicon.ico | 0 public/favicon.png | Bin 0 -> 72008 bytes public/js/maelstrom.js | 362 +++++++++++++++++- resources/js/components/OpenGraph.js | 93 +++++ resources/js/maelstrom.js | 4 +- .../maelstrom/layouts/wrapper.blade.php | 1 + resources/views/websites-show.blade.php | 4 + routes/web.php | 1 + 26 files changed, 866 insertions(+), 21 deletions(-) create mode 100644 app/Checkers/OpenGraph.php create mode 100644 app/Console/Commands/OpenGraphCheckCommand.php create mode 100644 app/Console/Commands/ScanOpenGraphCommand.php create mode 100644 app/HasOpenGraph.php create mode 100644 app/Http/Controllers/OpenGraphController.php create mode 100644 app/Jobs/OpenGraphCheck.php create mode 100644 app/OpenGraphScan.php create mode 100644 database/migrations/2019_08_19_202911_create_open_graph_scans_table.php delete mode 100644 public/favicon.ico create mode 100644 public/favicon.png create mode 100644 resources/js/components/OpenGraph.js diff --git a/app/Checkers/OpenGraph.php b/app/Checkers/OpenGraph.php new file mode 100644 index 0000000..5abe566 --- /dev/null +++ b/app/Checkers/OpenGraph.php @@ -0,0 +1,37 @@ +website = $website; + } + + public function run() + { + $this->fetch(); + } + + private function fetch() + { + $info = Embed::create($this->website->url); + + $scan = new OpenGraphScan([ + 'title' => $info->title, + 'description' => $info->description, + 'image' => $info->image, + 'url' => $info->url, + 'icon' => $info->providerIcon, + ]); + + $this->website->openGraph()->save($scan); + } +} diff --git a/app/Checkers/Robots.php b/app/Checkers/Robots.php index 7da2dba..99d9e1f 100644 --- a/app/Checkers/Robots.php +++ b/app/Checkers/Robots.php @@ -8,7 +8,6 @@ use SebastianBergmann\Diff\Differ; use App\Notifications\RobotsHasChanged; - class Robots { private $website; diff --git a/app/Checkers/Uptime.php b/app/Checkers/Uptime.php index f4f3b9d..4e10743 100644 --- a/app/Checkers/Uptime.php +++ b/app/Checkers/Uptime.php @@ -10,7 +10,6 @@ use App\Notifications\WebsiteIsDown; use App\Notifications\WebsiteIsBackUp; - class Uptime { private $website; diff --git a/app/Console/Commands/OpenGraphCheckCommand.php b/app/Console/Commands/OpenGraphCheckCommand.php new file mode 100644 index 0000000..02ee7d1 --- /dev/null +++ b/app/Console/Commands/OpenGraphCheckCommand.php @@ -0,0 +1,49 @@ +argument('website'); + + OpenGraphCheck::dispatchNow( + Website::findOrFail($websiteId) + ); + } +} diff --git a/app/Console/Commands/ScanCertificateCommand.php b/app/Console/Commands/ScanCertificateCommand.php index 0e31865..4b9ed15 100644 --- a/app/Console/Commands/ScanCertificateCommand.php +++ b/app/Console/Commands/ScanCertificateCommand.php @@ -2,6 +2,11 @@ namespace App\Console\Commands; +use App\Jobs\CertificateCheck; +use App\Jobs\DnsCheck; +use App\Jobs\RobotsCheck; +use App\Jobs\UptimeCheck; +use App\Website; use Illuminate\Console\Command; class ScanCertificateCommand extends Command @@ -11,7 +16,7 @@ class ScanCertificateCommand extends Command * * @var string */ - protected $signature = 'command:name'; + protected $signature = 'scan:certificate'; /** * The console command description. @@ -37,6 +42,9 @@ public function __construct() */ public function handle() { - // + Website::all()->each(function (Website $website) { + CertificateCheck::dispatch($website); + dump('Certificate check queued for ' . $website->url); + }); } } diff --git a/app/Console/Commands/ScanDnsCommand.php b/app/Console/Commands/ScanDnsCommand.php index 682337a..24c1b7b 100644 --- a/app/Console/Commands/ScanDnsCommand.php +++ b/app/Console/Commands/ScanDnsCommand.php @@ -2,6 +2,9 @@ namespace App\Console\Commands; +use App\Jobs\CertificateCheck; +use App\Jobs\DnsCheck; +use App\Website; use Illuminate\Console\Command; class ScanDnsCommand extends Command @@ -11,7 +14,7 @@ class ScanDnsCommand extends Command * * @var string */ - protected $signature = 'command:name'; + protected $signature = 'scan:dns'; /** * The console command description. @@ -37,6 +40,9 @@ public function __construct() */ public function handle() { - // + Website::all()->each(function (Website $website) { + DnsCheck::dispatch($website); + dump('DNS check queued for ' . $website->url); + }); } } diff --git a/app/Console/Commands/ScanOpenGraphCommand.php b/app/Console/Commands/ScanOpenGraphCommand.php new file mode 100644 index 0000000..c89c9ad --- /dev/null +++ b/app/Console/Commands/ScanOpenGraphCommand.php @@ -0,0 +1,48 @@ +each(function (Website $website) { + OpenGraphCheck::dispatch($website); + dump('Open Graph check queued for ' . $website->url); + }); + } +} diff --git a/app/Console/Commands/ScanRobotsCommand.php b/app/Console/Commands/ScanRobotsCommand.php index d2d2c7e..9ed93ee 100644 --- a/app/Console/Commands/ScanRobotsCommand.php +++ b/app/Console/Commands/ScanRobotsCommand.php @@ -2,6 +2,9 @@ namespace App\Console\Commands; +use App\Jobs\CertificateCheck; +use App\Jobs\RobotsCheck; +use App\Website; use Illuminate\Console\Command; class ScanRobotsCommand extends Command @@ -11,7 +14,7 @@ class ScanRobotsCommand extends Command * * @var string */ - protected $signature = 'command:name'; + protected $signature = 'scan:robots'; /** * The console command description. @@ -37,6 +40,9 @@ public function __construct() */ public function handle() { - // + Website::all()->each(function (Website $website) { + RobotsCheck::dispatch($website); + dump('Robots check queued for ' . $website->url); + }); } } diff --git a/app/Console/Commands/ScanUptimeCommand.php b/app/Console/Commands/ScanUptimeCommand.php index 203cec0..793c71b 100644 --- a/app/Console/Commands/ScanUptimeCommand.php +++ b/app/Console/Commands/ScanUptimeCommand.php @@ -2,6 +2,9 @@ namespace App\Console\Commands; +use App\Jobs\CertificateCheck; +use App\Jobs\UptimeCheck; +use App\Website; use Illuminate\Console\Command; class ScanUptimeCommand extends Command @@ -11,7 +14,7 @@ class ScanUptimeCommand extends Command * * @var string */ - protected $signature = 'command:name'; + protected $signature = 'scan:uptime'; /** * The console command description. @@ -37,6 +40,9 @@ public function __construct() */ public function handle() { - // + Website::all()->each(function (Website $website) { + UptimeCheck::dispatch($website); + dump('Uptime check queued for ' . $website->url); + }); } } diff --git a/app/Console/Kernel.php b/app/Console/Kernel.php index 87a6db7..19aa82e 100644 --- a/app/Console/Kernel.php +++ b/app/Console/Kernel.php @@ -33,6 +33,7 @@ protected function schedule(Schedule $schedule) $schedule->command('scan:robots')->hourly()->withoutOverlapping()->runInBackground(); $schedule->command('scan:dns')->hourly()->withoutOverlapping()->runInBackground(); $schedule->command('scan:certificate')->dailyAt('08:00:00')->withoutOverlapping()->runInBackground(); + $schedule->command('scan:opengraph')->dailyAt('08:00:00')->withoutOverlapping()->runInBackground(); } /** diff --git a/app/HasOpenGraph.php b/app/HasOpenGraph.php new file mode 100644 index 0000000..bd3beb8 --- /dev/null +++ b/app/HasOpenGraph.php @@ -0,0 +1,11 @@ +hasMany(OpenGraphScan::class); + } +} diff --git a/app/Http/Controllers/OpenGraphController.php b/app/Http/Controllers/OpenGraphController.php new file mode 100644 index 0000000..0e405d5 --- /dev/null +++ b/app/Http/Controllers/OpenGraphController.php @@ -0,0 +1,25 @@ +has('refresh')) { + OpenGraphCheck::dispatchNow($website); + } + + return $website->openGraph()->latest()->first(); + } +} diff --git a/app/Jobs/OpenGraphCheck.php b/app/Jobs/OpenGraphCheck.php new file mode 100644 index 0000000..d551fe9 --- /dev/null +++ b/app/Jobs/OpenGraphCheck.php @@ -0,0 +1,42 @@ +website = $website; + } + + /** + * Execute the job. + * + * @return void + */ + public function handle() + { + $checker = new OpenGraph($this->website); + $checker->run(); + } +} diff --git a/app/OpenGraphScan.php b/app/OpenGraphScan.php new file mode 100644 index 0000000..29356e5 --- /dev/null +++ b/app/OpenGraphScan.php @@ -0,0 +1,15 @@ +bigIncrements('id'); + $table->bigInteger('website_id'); + $table->string('icon')->nullable(); + $table->string('title')->nullable(); + $table->string('description')->nullable(); + $table->string('url')->nullable(); + $table->string('image')->nullable(); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('open_graph_scans'); + } +} diff --git a/public/favicon.ico b/public/favicon.ico deleted file mode 100644 index e69de29..0000000 diff --git a/public/favicon.png b/public/favicon.png new file mode 100644 index 0000000000000000000000000000000000000000..9a3dd481ae076b7929997d1923867b9daea22702 GIT binary patch literal 72008 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⋘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 literal 0 HcmV?d00001 diff --git a/public/js/maelstrom.js b/public/js/maelstrom.js index 344b202..333d813 100644 --- a/public/js/maelstrom.js +++ b/public/js/maelstrom.js @@ -12957,7 +12957,7 @@ function (_Component) { }); } }, - loading: this.state.loading, + loading: this.state.loading || undefined, type: "primary", htmlType: "submit", icon: "save" @@ -20568,7 +20568,7 @@ function (_React$Component) { onClick: this.update, type: "default", icon: "save", - loading: this.state.busy, + loading: this.state.busy || undefined, disabled: !this.state.name }, this.state.busy ? 'Saving' : 'Save'), react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(antd__WEBPACK_IMPORTED_MODULE_3__["Popconfirm"], { placement: "left", @@ -62521,10 +62521,10 @@ var _package_json__WEBPACK_IMPORTED_MODULE_0___namespace = /*#__PURE__*/__webpac /*!****************************************!*\ !*** ./node_modules/antd/package.json ***! \****************************************/ -/*! exports provided: _args, _from, _id, _inBundle, _integrity, _location, _phantomChildren, _requested, _requiredBy, _resolved, _spec, _where, browserslist, bugs, contributors, dependencies, description, devDependencies, files, homepage, husky, keywords, license, main, module, name, peerDependencies, publishConfig, repository, scripts, sideEffects, title, typings, version, default */ +/*! exports provided: _from, _id, _inBundle, _integrity, _location, _phantomChildren, _requested, _requiredBy, _resolved, _shasum, _spec, _where, browserslist, bugs, bundleDependencies, contributors, dependencies, deprecated, description, devDependencies, files, homepage, husky, keywords, license, main, module, name, peerDependencies, publishConfig, repository, scripts, sideEffects, title, typings, version, default */ /***/ (function(module) { -module.exports = JSON.parse("{\"_args\":[[\"antd@3.21.4\",\"/Users/storm/Documents/Websites/odin\"]],\"_from\":\"antd@3.21.4\",\"_id\":\"antd@3.21.4\",\"_inBundle\":false,\"_integrity\":\"sha512-ZtX2UAEewrWUepl4sT6TeJw91A98bgl4VGTjRIKfwzNW1GKGKKf4iI9bA6oCyMt/C4QEFsSsmkBwfBqT+N+Xzg==\",\"_location\":\"/antd\",\"_phantomChildren\":{},\"_requested\":{\"type\":\"version\",\"registry\":true,\"raw\":\"antd@3.21.4\",\"name\":\"antd\",\"escapedName\":\"antd\",\"rawSpec\":\"3.21.4\",\"saveSpec\":null,\"fetchSpec\":\"3.21.4\"},\"_requiredBy\":[\"/\",\"/@maelstrom-cms/toolkit\"],\"_resolved\":\"https://registry.npmjs.org/antd/-/antd-3.21.4.tgz\",\"_spec\":\"3.21.4\",\"_where\":\"/Users/storm/Documents/Websites/odin\",\"browserslist\":[\"last 2 version\",\"Firefox ESR\",\"> 1%\",\"ie >= 9\"],\"bugs\":{\"url\":\"https://github.com/ant-design/ant-design/issues\"},\"contributors\":[{\"name\":\"ant\"}],\"dependencies\":{\"@ant-design/create-react-context\":\"^0.2.4\",\"@ant-design/icons\":\"~2.1.1\",\"@ant-design/icons-react\":\"~2.0.1\",\"@types/react-slick\":\"^0.23.4\",\"array-tree-filter\":\"^2.1.0\",\"babel-runtime\":\"6.x\",\"classnames\":\"~2.2.6\",\"copy-to-clipboard\":\"^3.2.0\",\"css-animation\":\"^1.5.0\",\"dom-closest\":\"^0.2.0\",\"enquire.js\":\"^2.1.6\",\"lodash\":\"^4.17.13\",\"moment\":\"^2.24.0\",\"omit.js\":\"^1.0.2\",\"prop-types\":\"^15.7.2\",\"raf\":\"^3.4.1\",\"rc-animate\":\"^2.8.3\",\"rc-calendar\":\"~9.15.5\",\"rc-cascader\":\"~0.17.4\",\"rc-checkbox\":\"~2.1.6\",\"rc-collapse\":\"~1.11.3\",\"rc-dialog\":\"~7.5.2\",\"rc-drawer\":\"~2.0.1\",\"rc-dropdown\":\"~2.4.1\",\"rc-editor-mention\":\"^1.1.13\",\"rc-form\":\"^2.4.5\",\"rc-input-number\":\"~4.4.5\",\"rc-mentions\":\"~0.3.1\",\"rc-menu\":\"~7.4.23\",\"rc-notification\":\"~3.3.1\",\"rc-pagination\":\"~1.20.5\",\"rc-progress\":\"~2.5.0\",\"rc-rate\":\"~2.5.0\",\"rc-select\":\"~9.2.0\",\"rc-slider\":\"~8.6.11\",\"rc-steps\":\"~3.4.1\",\"rc-switch\":\"~1.9.0\",\"rc-table\":\"~6.7.0\",\"rc-tabs\":\"~9.6.4\",\"rc-time-picker\":\"~3.7.1\",\"rc-tooltip\":\"~3.7.3\",\"rc-tree\":\"~2.1.0\",\"rc-tree-select\":\"~2.9.1\",\"rc-trigger\":\"^2.6.2\",\"rc-upload\":\"~2.7.0\",\"rc-util\":\"^4.6.0\",\"react-lazy-load\":\"^3.0.13\",\"react-lifecycles-compat\":\"^3.0.4\",\"react-slick\":\"~0.24.0\",\"resize-observer-polyfill\":\"^1.5.1\",\"shallowequal\":\"^1.1.0\",\"warning\":\"~4.0.3\"},\"description\":\"An enterprise-class UI design language and React components implementation\",\"devDependencies\":{\"@ant-design/colors\":\"^3.1.0\",\"@ant-design/tools\":\"^8.0.4\",\"@packtracker/webpack-plugin\":\"^2.0.1\",\"@sentry/browser\":\"^5.4.0\",\"@types/classnames\":\"^2.2.8\",\"@types/prop-types\":\"^15.7.1\",\"@types/react\":\"^16.9.0\",\"@types/react-dom\":\"^16.8.4\",\"@types/warning\":\"^3.0.0\",\"@typescript-eslint/eslint-plugin\":\"^1.13.0\",\"@typescript-eslint/parser\":\"^1.13.0\",\"@yesmeck/offline-plugin\":\"^5.0.5\",\"antd-theme-generator\":\"^1.1.6\",\"babel-eslint\":\"^10.0.1\",\"babel-plugin-add-react-displayname\":\"^0.0.5\",\"bisheng\":\"^1.3.0\",\"bisheng-plugin-antd\":\"^1.0.2\",\"bisheng-plugin-description\":\"^0.1.4\",\"bisheng-plugin-react\":\"^1.0.0\",\"bisheng-plugin-toc\":\"^0.4.4\",\"chalk\":\"^2.4.2\",\"cross-env\":\"^5.2.0\",\"css-split-webpack-plugin\":\"^0.2.6\",\"dekko\":\"^0.2.1\",\"docsearch.js\":\"^2.6.3\",\"enquire-js\":\"^0.2.1\",\"enzyme\":\"^3.10.0\",\"enzyme-adapter-react-16\":\"^1.14.0\",\"enzyme-to-json\":\"^3.3.5\",\"eslint\":\"^6.1.0\",\"eslint-config-airbnb\":\"^17.1.0\",\"eslint-config-prettier\":\"^6.0.0\",\"eslint-plugin-babel\":\"^5.3.0\",\"eslint-plugin-import\":\"^2.17.3\",\"eslint-plugin-jest\":\"^22.6.4\",\"eslint-plugin-jsx-a11y\":\"^6.2.1\",\"eslint-plugin-markdown\":\"^1.0.0\",\"eslint-plugin-react\":\"^7.14.2\",\"eslint-tinker\":\"^0.5.0\",\"fetch-jsonp\":\"^1.1.3\",\"glob\":\"^7.1.4\",\"husky\":\"^3.0.2\",\"immutability-helper\":\"^3.0.0\",\"intersection-observer\":\"^0.7.0\",\"jest\":\"^24.8.0\",\"jsdom\":\"^15.1.1\",\"jsonml.js\":\"^0.1.0\",\"logrocket\":\"^1.0.0\",\"logrocket-react\":\"^3.0.0\",\"lz-string\":\"^1.4.4\",\"mockdate\":\"^2.0.2\",\"node-fetch\":\"^2.6.0\",\"preact\":\"^8.4.2\",\"preact-compat\":\"^3.18.5\",\"prettier\":\"^1.17.1\",\"pretty-quick\":\"^1.11.0\",\"querystring\":\"^0.2.0\",\"rc-queue-anim\":\"^1.6.12\",\"rc-scroll-anim\":\"^2.5.8\",\"rc-tween-one\":\"^2.4.1\",\"react\":\"^16.5.2\",\"react-color\":\"^2.17.3\",\"react-copy-to-clipboard\":\"^5.0.1\",\"react-dnd\":\"^9.0.0\",\"react-dnd-html5-backend\":\"^9.0.0\",\"react-document-title\":\"^2.0.3\",\"react-dom\":\"^16.5.2\",\"react-github-button\":\"^0.1.11\",\"react-highlight-words\":\"^0.16.0\",\"react-infinite-scroller\":\"^1.2.4\",\"react-intl\":\"^3.1.1\",\"react-resizable\":\"^1.8.0\",\"react-router\":\"^3.2.3\",\"react-router-dom\":\"^5.0.1\",\"react-sticky\":\"^6.0.3\",\"react-test-renderer\":\"^16.8.6\",\"react-virtualized\":\"~9.21.1\",\"reqwest\":\"^2.0.5\",\"rimraf\":\"^2.6.3\",\"scrollama\":\"^2.0.0\",\"simple-git\":\"^1.113.0\",\"stylelint\":\"^10.0.1\",\"stylelint-config-prettier\":\"^5.2.0\",\"stylelint-config-rational-order\":\"^0.1.2\",\"stylelint-config-standard\":\"^18.3.0\",\"stylelint-declaration-block-no-ignored-properties\":\"^2.1.0\",\"stylelint-order\":\"^3.0.0\",\"typescript\":\"~3.5.1\",\"xhr-mock\":\"^2.4.1\",\"xhr2\":\"^0.2.0\"},\"files\":[\"dist\",\"lib\",\"es\"],\"homepage\":\"http://ant.design/\",\"husky\":{\"hooks\":{\"pre-commit\":\"pretty-quick --staged\"}},\"keywords\":[\"ant\",\"design\",\"react\",\"react-component\",\"component\",\"components\",\"ui\",\"framework\",\"frontend\"],\"license\":\"MIT\",\"main\":\"lib/index.js\",\"module\":\"es/index.js\",\"name\":\"antd\",\"peerDependencies\":{\"react\":\">=16.0.0\",\"react-dom\":\">=16.0.0\"},\"publishConfig\":{\"registry\":\"https://registry.npmjs.org/\"},\"repository\":{\"type\":\"git\",\"url\":\"git+https://github.com/ant-design/ant-design.git\"},\"scripts\":{\"api-collection\":\"antd-tools run api-collection\",\"authors\":\"git log --format='%aN <%aE>' | sort -u | grep -v 'users.noreply.github.com' | grep -v 'gitter.im' | grep -v '.local>' | grep -v 'alibaba-inc.com' | grep -v 'alipay.com' | grep -v 'taobao.com' > AUTHORS.txt\",\"check-commit\":\"node ./scripts/check-commit.js\",\"compile\":\"antd-tools run compile\",\"deploy\":\"bisheng gh-pages --push-only\",\"deploy:china-mirror\":\"git checkout gh-pages && git pull origin gh-pages && git push git@gitee.com:ant-design/ant-design.git gh-pages\",\"dist\":\"antd-tools run dist\",\"lint\":\"npm run lint:ts && npm run lint:ts:with-eslint && npm run lint:es && npm run lint:demo && npm run lint:style && npm run lint:deps\",\"lint-fix\":\"npm run lint-fix:code && npm run lint-fix:demo && npm run lint-fix:style\",\"lint-fix:code\":\"eslint --fix tests site scripts components ./.*.js ./webpack.config.js --ext '.js,.jsx'\",\"lint-fix:demo\":\"eslint-tinker ./components/*/demo/*.md\",\"lint-fix:style\":\"stylelint --fix '{site,components}/**/*.less' --syntax less\",\"lint-fix:ts\":\"npm run tsc && antd-tools run ts-lint-fix\",\"lint:demo\":\"cross-env RUN_ENV=DEMO eslint components/*/demo/*.md --ext '.md' --rule 'import/no-unresolved: 0'\",\"lint:deps\":\"antd-tools run deps-lint\",\"lint:es\":\"eslint tests site scripts components ./.*.js ./webpack.config.js --ext '.js,.jsx'\",\"lint:md\":\"remark components/\",\"lint:style\":\"stylelint '{site,components}/**/*.less' --syntax less\",\"lint:ts\":\"npm run tsc && antd-tools run ts-lint\",\"lint:ts:with-eslint\":\"eslint components/**/*.tsx\",\"pre-publish\":\"npm run check-commit && npm run test-all\",\"predeploy\":\"antd-tools run clean && npm run site && cp netlify.toml CNAME _site && cp .circleci/config.yml _site\",\"prepublish\":\"antd-tools run guard\",\"prettier\":\"prettier -c --write '**/*'\",\"pretty-quick\":\"pretty-quick\",\"pub\":\"antd-tools run pub\",\"site\":\"bisheng build --ssr -c ./site/bisheng.config.js && node ./scripts/generateColorLess.js\",\"sort-api\":\"antd-tools run sort-api-table\",\"start\":\"rimraf _site && mkdir _site && node ./scripts/generateColorLess.js && cross-env NODE_ENV=development bisheng start -c ./site/bisheng.config.js\",\"start:preact\":\"node ./scripts/generateColorLess.js && cross-env NODE_ENV=development REACT_ENV=preact bisheng start -c ./site/bisheng.config.js\",\"test\":\"jest --config .jest.js --no-cache\",\"test-all\":\"./scripts/test-all.sh\",\"test-node\":\"jest --config .jest.node.js --no-cache\",\"tsc\":\"tsc\"},\"sideEffects\":[\"dist/*\",\"es/**/style/*\",\"lib/**/style/*\",\"*.less\"],\"title\":\"Ant Design\",\"typings\":\"lib/index.d.ts\",\"version\":\"3.21.4\"}"); +module.exports = JSON.parse("{\"_from\":\"antd\",\"_id\":\"antd@3.21.4\",\"_inBundle\":false,\"_integrity\":\"sha512-ZtX2UAEewrWUepl4sT6TeJw91A98bgl4VGTjRIKfwzNW1GKGKKf4iI9bA6oCyMt/C4QEFsSsmkBwfBqT+N+Xzg==\",\"_location\":\"/antd\",\"_phantomChildren\":{},\"_requested\":{\"type\":\"tag\",\"registry\":true,\"raw\":\"antd\",\"name\":\"antd\",\"escapedName\":\"antd\",\"rawSpec\":\"\",\"saveSpec\":null,\"fetchSpec\":\"latest\"},\"_requiredBy\":[\"#USER\",\"/\",\"/@maelstrom-cms/toolkit\"],\"_resolved\":\"https://registry.npmjs.org/antd/-/antd-3.21.4.tgz\",\"_shasum\":\"6e5e8c6edde25ddce0aa1c666f0d6ef8d04e821e\",\"_spec\":\"antd\",\"_where\":\"/Users/owen/Sites/odin\",\"browserslist\":[\"last 2 version\",\"Firefox ESR\",\"> 1%\",\"ie >= 9\"],\"bugs\":{\"url\":\"https://github.com/ant-design/ant-design/issues\"},\"bundleDependencies\":false,\"contributors\":[{\"name\":\"ant\"}],\"dependencies\":{\"@ant-design/create-react-context\":\"^0.2.4\",\"@ant-design/icons\":\"~2.1.1\",\"@ant-design/icons-react\":\"~2.0.1\",\"@types/react-slick\":\"^0.23.4\",\"array-tree-filter\":\"^2.1.0\",\"babel-runtime\":\"6.x\",\"classnames\":\"~2.2.6\",\"copy-to-clipboard\":\"^3.2.0\",\"css-animation\":\"^1.5.0\",\"dom-closest\":\"^0.2.0\",\"enquire.js\":\"^2.1.6\",\"lodash\":\"^4.17.13\",\"moment\":\"^2.24.0\",\"omit.js\":\"^1.0.2\",\"prop-types\":\"^15.7.2\",\"raf\":\"^3.4.1\",\"rc-animate\":\"^2.8.3\",\"rc-calendar\":\"~9.15.5\",\"rc-cascader\":\"~0.17.4\",\"rc-checkbox\":\"~2.1.6\",\"rc-collapse\":\"~1.11.3\",\"rc-dialog\":\"~7.5.2\",\"rc-drawer\":\"~2.0.1\",\"rc-dropdown\":\"~2.4.1\",\"rc-editor-mention\":\"^1.1.13\",\"rc-form\":\"^2.4.5\",\"rc-input-number\":\"~4.4.5\",\"rc-mentions\":\"~0.3.1\",\"rc-menu\":\"~7.4.23\",\"rc-notification\":\"~3.3.1\",\"rc-pagination\":\"~1.20.5\",\"rc-progress\":\"~2.5.0\",\"rc-rate\":\"~2.5.0\",\"rc-select\":\"~9.2.0\",\"rc-slider\":\"~8.6.11\",\"rc-steps\":\"~3.4.1\",\"rc-switch\":\"~1.9.0\",\"rc-table\":\"~6.7.0\",\"rc-tabs\":\"~9.6.4\",\"rc-time-picker\":\"~3.7.1\",\"rc-tooltip\":\"~3.7.3\",\"rc-tree\":\"~2.1.0\",\"rc-tree-select\":\"~2.9.1\",\"rc-trigger\":\"^2.6.2\",\"rc-upload\":\"~2.7.0\",\"rc-util\":\"^4.6.0\",\"react-lazy-load\":\"^3.0.13\",\"react-lifecycles-compat\":\"^3.0.4\",\"react-slick\":\"~0.24.0\",\"resize-observer-polyfill\":\"^1.5.1\",\"shallowequal\":\"^1.1.0\",\"warning\":\"~4.0.3\"},\"deprecated\":false,\"description\":\"An enterprise-class UI design language and React components implementation\",\"devDependencies\":{\"@ant-design/colors\":\"^3.1.0\",\"@ant-design/tools\":\"^8.0.4\",\"@packtracker/webpack-plugin\":\"^2.0.1\",\"@sentry/browser\":\"^5.4.0\",\"@types/classnames\":\"^2.2.8\",\"@types/prop-types\":\"^15.7.1\",\"@types/react\":\"^16.9.0\",\"@types/react-dom\":\"^16.8.4\",\"@types/warning\":\"^3.0.0\",\"@typescript-eslint/eslint-plugin\":\"^1.13.0\",\"@typescript-eslint/parser\":\"^1.13.0\",\"@yesmeck/offline-plugin\":\"^5.0.5\",\"antd-theme-generator\":\"^1.1.6\",\"babel-eslint\":\"^10.0.1\",\"babel-plugin-add-react-displayname\":\"^0.0.5\",\"bisheng\":\"^1.3.0\",\"bisheng-plugin-antd\":\"^1.0.2\",\"bisheng-plugin-description\":\"^0.1.4\",\"bisheng-plugin-react\":\"^1.0.0\",\"bisheng-plugin-toc\":\"^0.4.4\",\"chalk\":\"^2.4.2\",\"cross-env\":\"^5.2.0\",\"css-split-webpack-plugin\":\"^0.2.6\",\"dekko\":\"^0.2.1\",\"docsearch.js\":\"^2.6.3\",\"enquire-js\":\"^0.2.1\",\"enzyme\":\"^3.10.0\",\"enzyme-adapter-react-16\":\"^1.14.0\",\"enzyme-to-json\":\"^3.3.5\",\"eslint\":\"^6.1.0\",\"eslint-config-airbnb\":\"^17.1.0\",\"eslint-config-prettier\":\"^6.0.0\",\"eslint-plugin-babel\":\"^5.3.0\",\"eslint-plugin-import\":\"^2.17.3\",\"eslint-plugin-jest\":\"^22.6.4\",\"eslint-plugin-jsx-a11y\":\"^6.2.1\",\"eslint-plugin-markdown\":\"^1.0.0\",\"eslint-plugin-react\":\"^7.14.2\",\"eslint-tinker\":\"^0.5.0\",\"fetch-jsonp\":\"^1.1.3\",\"glob\":\"^7.1.4\",\"husky\":\"^3.0.2\",\"immutability-helper\":\"^3.0.0\",\"intersection-observer\":\"^0.7.0\",\"jest\":\"^24.8.0\",\"jsdom\":\"^15.1.1\",\"jsonml.js\":\"^0.1.0\",\"logrocket\":\"^1.0.0\",\"logrocket-react\":\"^3.0.0\",\"lz-string\":\"^1.4.4\",\"mockdate\":\"^2.0.2\",\"node-fetch\":\"^2.6.0\",\"preact\":\"^8.4.2\",\"preact-compat\":\"^3.18.5\",\"prettier\":\"^1.17.1\",\"pretty-quick\":\"^1.11.0\",\"querystring\":\"^0.2.0\",\"rc-queue-anim\":\"^1.6.12\",\"rc-scroll-anim\":\"^2.5.8\",\"rc-tween-one\":\"^2.4.1\",\"react\":\"^16.5.2\",\"react-color\":\"^2.17.3\",\"react-copy-to-clipboard\":\"^5.0.1\",\"react-dnd\":\"^9.0.0\",\"react-dnd-html5-backend\":\"^9.0.0\",\"react-document-title\":\"^2.0.3\",\"react-dom\":\"^16.5.2\",\"react-github-button\":\"^0.1.11\",\"react-highlight-words\":\"^0.16.0\",\"react-infinite-scroller\":\"^1.2.4\",\"react-intl\":\"^3.1.1\",\"react-resizable\":\"^1.8.0\",\"react-router\":\"^3.2.3\",\"react-router-dom\":\"^5.0.1\",\"react-sticky\":\"^6.0.3\",\"react-test-renderer\":\"^16.8.6\",\"react-virtualized\":\"~9.21.1\",\"reqwest\":\"^2.0.5\",\"rimraf\":\"^2.6.3\",\"scrollama\":\"^2.0.0\",\"simple-git\":\"^1.113.0\",\"stylelint\":\"^10.0.1\",\"stylelint-config-prettier\":\"^5.2.0\",\"stylelint-config-rational-order\":\"^0.1.2\",\"stylelint-config-standard\":\"^18.3.0\",\"stylelint-declaration-block-no-ignored-properties\":\"^2.1.0\",\"stylelint-order\":\"^3.0.0\",\"typescript\":\"~3.5.1\",\"xhr-mock\":\"^2.4.1\",\"xhr2\":\"^0.2.0\"},\"files\":[\"dist\",\"lib\",\"es\"],\"homepage\":\"http://ant.design/\",\"husky\":{\"hooks\":{\"pre-commit\":\"pretty-quick --staged\"}},\"keywords\":[\"ant\",\"design\",\"react\",\"react-component\",\"component\",\"components\",\"ui\",\"framework\",\"frontend\"],\"license\":\"MIT\",\"main\":\"lib/index.js\",\"module\":\"es/index.js\",\"name\":\"antd\",\"peerDependencies\":{\"react\":\">=16.0.0\",\"react-dom\":\">=16.0.0\"},\"publishConfig\":{\"registry\":\"https://registry.npmjs.org/\"},\"repository\":{\"type\":\"git\",\"url\":\"git+https://github.com/ant-design/ant-design.git\"},\"scripts\":{\"api-collection\":\"antd-tools run api-collection\",\"authors\":\"git log --format='%aN <%aE>' | sort -u | grep -v 'users.noreply.github.com' | grep -v 'gitter.im' | grep -v '.local>' | grep -v 'alibaba-inc.com' | grep -v 'alipay.com' | grep -v 'taobao.com' > AUTHORS.txt\",\"check-commit\":\"node ./scripts/check-commit.js\",\"compile\":\"antd-tools run compile\",\"deploy\":\"bisheng gh-pages --push-only\",\"deploy:china-mirror\":\"git checkout gh-pages && git pull origin gh-pages && git push git@gitee.com:ant-design/ant-design.git gh-pages\",\"dist\":\"antd-tools run dist\",\"lint\":\"npm run lint:ts && npm run lint:ts:with-eslint && npm run lint:es && npm run lint:demo && npm run lint:style && npm run lint:deps\",\"lint-fix\":\"npm run lint-fix:code && npm run lint-fix:demo && npm run lint-fix:style\",\"lint-fix:code\":\"eslint --fix tests site scripts components ./.*.js ./webpack.config.js --ext '.js,.jsx'\",\"lint-fix:demo\":\"eslint-tinker ./components/*/demo/*.md\",\"lint-fix:style\":\"stylelint --fix '{site,components}/**/*.less' --syntax less\",\"lint-fix:ts\":\"npm run tsc && antd-tools run ts-lint-fix\",\"lint:demo\":\"cross-env RUN_ENV=DEMO eslint components/*/demo/*.md --ext '.md' --rule 'import/no-unresolved: 0'\",\"lint:deps\":\"antd-tools run deps-lint\",\"lint:es\":\"eslint tests site scripts components ./.*.js ./webpack.config.js --ext '.js,.jsx'\",\"lint:md\":\"remark components/\",\"lint:style\":\"stylelint '{site,components}/**/*.less' --syntax less\",\"lint:ts\":\"npm run tsc && antd-tools run ts-lint\",\"lint:ts:with-eslint\":\"eslint components/**/*.tsx\",\"pre-publish\":\"npm run check-commit && npm run test-all\",\"predeploy\":\"antd-tools run clean && npm run site && cp netlify.toml CNAME _site && cp .circleci/config.yml _site\",\"prepublish\":\"antd-tools run guard\",\"prettier\":\"prettier -c --write '**/*'\",\"pretty-quick\":\"pretty-quick\",\"pub\":\"antd-tools run pub\",\"site\":\"bisheng build --ssr -c ./site/bisheng.config.js && node ./scripts/generateColorLess.js\",\"sort-api\":\"antd-tools run sort-api-table\",\"start\":\"rimraf _site && mkdir _site && node ./scripts/generateColorLess.js && cross-env NODE_ENV=development bisheng start -c ./site/bisheng.config.js\",\"start:preact\":\"node ./scripts/generateColorLess.js && cross-env NODE_ENV=development REACT_ENV=preact bisheng start -c ./site/bisheng.config.js\",\"test\":\"jest --config .jest.js --no-cache\",\"test-all\":\"./scripts/test-all.sh\",\"test-node\":\"jest --config .jest.node.js --no-cache\",\"tsc\":\"tsc\"},\"sideEffects\":[\"dist/*\",\"es/**/style/*\",\"lib/**/style/*\",\"*.less\"],\"title\":\"Ant Design\",\"typings\":\"lib/index.d.ts\",\"version\":\"3.21.4\"}"); /***/ }), @@ -112526,10 +112526,10 @@ module.exports = JSON.parse("{\"amp\":\"&\",\"apos\":\"'\",\"gt\":\">\",\"lt\":\ /*!*******************************************!*\ !*** ./node_modules/cheerio/package.json ***! \*******************************************/ -/*! exports provided: _args, _development, _from, _id, _inBundle, _integrity, _location, _phantomChildren, _requested, _requiredBy, _resolved, _spec, _where, author, bugs, dependencies, description, devDependencies, engines, files, homepage, keywords, license, main, name, repository, scripts, version, default */ +/*! exports provided: _from, _id, _inBundle, _integrity, _location, _phantomChildren, _requested, _requiredBy, _resolved, _shasum, _spec, _where, author, bugs, bundleDependencies, dependencies, deprecated, description, devDependencies, engines, files, homepage, keywords, license, main, name, repository, scripts, version, default */ /***/ (function(module) { -module.exports = JSON.parse("{\"_args\":[[\"cheerio@0.22.0\",\"/Users/storm/Documents/Websites/odin\"]],\"_development\":true,\"_from\":\"cheerio@0.22.0\",\"_id\":\"cheerio@0.22.0\",\"_inBundle\":false,\"_integrity\":\"sha1-qbqoYKP5tZWmuBsahocxIe06Jp4=\",\"_location\":\"/cheerio\",\"_phantomChildren\":{\"boolbase\":\"1.0.0\",\"css-what\":\"2.1.3\",\"domelementtype\":\"1.3.1\",\"nth-check\":\"1.0.2\"},\"_requested\":{\"type\":\"version\",\"registry\":true,\"raw\":\"cheerio@0.22.0\",\"name\":\"cheerio\",\"escapedName\":\"cheerio\",\"rawSpec\":\"0.22.0\",\"saveSpec\":null,\"fetchSpec\":\"0.22.0\"},\"_requiredBy\":[\"/prettify-html\"],\"_resolved\":\"https://registry.npmjs.org/cheerio/-/cheerio-0.22.0.tgz\",\"_spec\":\"0.22.0\",\"_where\":\"/Users/storm/Documents/Websites/odin\",\"author\":{\"name\":\"Matt Mueller\",\"email\":\"mattmuelle@gmail.com\",\"url\":\"mat.io\"},\"bugs\":{\"url\":\"https://github.com/cheeriojs/cheerio/issues\"},\"dependencies\":{\"css-select\":\"~1.2.0\",\"dom-serializer\":\"~0.1.0\",\"entities\":\"~1.1.1\",\"htmlparser2\":\"^3.9.1\",\"lodash.assignin\":\"^4.0.9\",\"lodash.bind\":\"^4.1.4\",\"lodash.defaults\":\"^4.0.1\",\"lodash.filter\":\"^4.4.0\",\"lodash.flatten\":\"^4.2.0\",\"lodash.foreach\":\"^4.3.0\",\"lodash.map\":\"^4.4.0\",\"lodash.merge\":\"^4.4.0\",\"lodash.pick\":\"^4.2.1\",\"lodash.reduce\":\"^4.4.0\",\"lodash.reject\":\"^4.4.0\",\"lodash.some\":\"^4.4.0\"},\"description\":\"Tiny, fast, and elegant implementation of core jQuery designed specifically for the server\",\"devDependencies\":{\"benchmark\":\"^2.1.0\",\"coveralls\":\"^2.11.9\",\"expect.js\":\"~0.3.1\",\"istanbul\":\"^0.4.3\",\"jquery\":\"^3.0.0\",\"jsdom\":\"^9.2.1\",\"jshint\":\"^2.9.2\",\"mocha\":\"^2.5.3\",\"xyz\":\"~0.5.0\"},\"engines\":{\"node\":\">= 0.6\"},\"files\":[\"index.js\",\"lib\"],\"homepage\":\"https://github.com/cheeriojs/cheerio#readme\",\"keywords\":[\"htmlparser\",\"jquery\",\"selector\",\"scraper\",\"parser\",\"html\"],\"license\":\"MIT\",\"main\":\"./index.js\",\"name\":\"cheerio\",\"repository\":{\"type\":\"git\",\"url\":\"git://github.com/cheeriojs/cheerio.git\"},\"scripts\":{\"test\":\"make test\"},\"version\":\"0.22.0\"}"); +module.exports = JSON.parse("{\"_from\":\"cheerio@^0.22.0\",\"_id\":\"cheerio@0.22.0\",\"_inBundle\":false,\"_integrity\":\"sha1-qbqoYKP5tZWmuBsahocxIe06Jp4=\",\"_location\":\"/cheerio\",\"_phantomChildren\":{\"boolbase\":\"1.0.0\",\"css-what\":\"2.1.3\",\"domelementtype\":\"1.3.1\",\"nth-check\":\"1.0.2\"},\"_requested\":{\"type\":\"range\",\"registry\":true,\"raw\":\"cheerio@^0.22.0\",\"name\":\"cheerio\",\"escapedName\":\"cheerio\",\"rawSpec\":\"^0.22.0\",\"saveSpec\":null,\"fetchSpec\":\"^0.22.0\"},\"_requiredBy\":[\"/prettify-html\"],\"_resolved\":\"https://registry.npmjs.org/cheerio/-/cheerio-0.22.0.tgz\",\"_shasum\":\"a9baa860a3f9b595a6b81b1a86873121ed3a269e\",\"_spec\":\"cheerio@^0.22.0\",\"_where\":\"/Users/owen/Sites/odin/node_modules/prettify-html\",\"author\":{\"name\":\"Matt Mueller\",\"email\":\"mattmuelle@gmail.com\",\"url\":\"mat.io\"},\"bugs\":{\"url\":\"https://github.com/cheeriojs/cheerio/issues\"},\"bundleDependencies\":false,\"dependencies\":{\"css-select\":\"~1.2.0\",\"dom-serializer\":\"~0.1.0\",\"entities\":\"~1.1.1\",\"htmlparser2\":\"^3.9.1\",\"lodash.assignin\":\"^4.0.9\",\"lodash.bind\":\"^4.1.4\",\"lodash.defaults\":\"^4.0.1\",\"lodash.filter\":\"^4.4.0\",\"lodash.flatten\":\"^4.2.0\",\"lodash.foreach\":\"^4.3.0\",\"lodash.map\":\"^4.4.0\",\"lodash.merge\":\"^4.4.0\",\"lodash.pick\":\"^4.2.1\",\"lodash.reduce\":\"^4.4.0\",\"lodash.reject\":\"^4.4.0\",\"lodash.some\":\"^4.4.0\"},\"deprecated\":false,\"description\":\"Tiny, fast, and elegant implementation of core jQuery designed specifically for the server\",\"devDependencies\":{\"benchmark\":\"^2.1.0\",\"coveralls\":\"^2.11.9\",\"expect.js\":\"~0.3.1\",\"istanbul\":\"^0.4.3\",\"jquery\":\"^3.0.0\",\"jsdom\":\"^9.2.1\",\"jshint\":\"^2.9.2\",\"mocha\":\"^2.5.3\",\"xyz\":\"~0.5.0\"},\"engines\":{\"node\":\">= 0.6\"},\"files\":[\"index.js\",\"lib\"],\"homepage\":\"https://github.com/cheeriojs/cheerio#readme\",\"keywords\":[\"htmlparser\",\"jquery\",\"selector\",\"scraper\",\"parser\",\"html\"],\"license\":\"MIT\",\"main\":\"./index.js\",\"name\":\"cheerio\",\"repository\":{\"type\":\"git\",\"url\":\"git://github.com/cheeriojs/cheerio.git\"},\"scripts\":{\"test\":\"make test\"},\"version\":\"0.22.0\"}"); /***/ }), @@ -322790,6 +322790,347 @@ function (_React$Component) { +/***/ }), + +/***/ "./resources/js/components/OpenGraph.js": +/*!**********************************************!*\ + !*** ./resources/js/components/OpenGraph.js ***! + \**********************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return RobotsReport; }); +/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/regenerator */ "./node_modules/@babel/runtime/regenerator/index.js"); +/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__); +/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ "./node_modules/react/index.js"); +/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__); +/* harmony import */ var antd__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! antd */ "./node_modules/antd/es/index.js"); +/* harmony import */ var _helpers__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../helpers */ "./resources/js/helpers.js"); +function _typeof2(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof2 = function _typeof2(obj) { return typeof obj; }; } else { _typeof2 = function _typeof2(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof2(obj); } + + + +function _typeof(obj) { + if (typeof Symbol === "function" && _typeof2(Symbol.iterator) === "symbol") { + _typeof = function _typeof(obj) { + return _typeof2(obj); + }; + } else { + _typeof = function _typeof(obj) { + return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : _typeof2(obj); + }; + } + + return _typeof(obj); +} + +function ownKeys(object, enumerableOnly) { + var keys = Object.keys(object); + + if (Object.getOwnPropertySymbols) { + var symbols = Object.getOwnPropertySymbols(object); + if (enumerableOnly) symbols = symbols.filter(function (sym) { + return Object.getOwnPropertyDescriptor(object, sym).enumerable; + }); + keys.push.apply(keys, symbols); + } + + return keys; +} + +function _objectSpread(target) { + for (var i = 1; i < arguments.length; i++) { + var source = arguments[i] != null ? arguments[i] : {}; + + if (i % 2) { + ownKeys(source, true).forEach(function (key) { + _defineProperty(target, key, source[key]); + }); + } else if (Object.getOwnPropertyDescriptors) { + Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); + } else { + ownKeys(source).forEach(function (key) { + Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); + }); + } + } + + return target; +} + +function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { + try { + var info = gen[key](arg); + var value = info.value; + } catch (error) { + reject(error); + return; + } + + if (info.done) { + resolve(value); + } else { + Promise.resolve(value).then(_next, _throw); + } +} + +function _asyncToGenerator(fn) { + return function () { + var self = this, + args = arguments; + return new Promise(function (resolve, reject) { + var gen = fn.apply(self, args); + + function _next(value) { + asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); + } + + function _throw(err) { + asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); + } + + _next(undefined); + }); + }; +} + +function _classCallCheck(instance, Constructor) { + if (!(instance instanceof Constructor)) { + throw new TypeError("Cannot call a class as a function"); + } +} + +function _defineProperties(target, props) { + for (var i = 0; i < props.length; i++) { + var descriptor = props[i]; + descriptor.enumerable = descriptor.enumerable || false; + descriptor.configurable = true; + if ("value" in descriptor) descriptor.writable = true; + Object.defineProperty(target, descriptor.key, descriptor); + } +} + +function _createClass(Constructor, protoProps, staticProps) { + if (protoProps) _defineProperties(Constructor.prototype, protoProps); + if (staticProps) _defineProperties(Constructor, staticProps); + return Constructor; +} + +function _possibleConstructorReturn(self, call) { + if (call && (_typeof(call) === "object" || typeof call === "function")) { + return call; + } + + return _assertThisInitialized(self); +} + +function _getPrototypeOf(o) { + _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { + return o.__proto__ || Object.getPrototypeOf(o); + }; + return _getPrototypeOf(o); +} + +function _assertThisInitialized(self) { + if (self === void 0) { + throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); + } + + return self; +} + +function _inherits(subClass, superClass) { + if (typeof superClass !== "function" && superClass !== null) { + throw new TypeError("Super expression must either be null or a function"); + } + + subClass.prototype = Object.create(superClass && superClass.prototype, { + constructor: { + value: subClass, + writable: true, + configurable: true + } + }); + if (superClass) _setPrototypeOf(subClass, superClass); +} + +function _setPrototypeOf(o, p) { + _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { + o.__proto__ = p; + return o; + }; + + return _setPrototypeOf(o, p); +} + +function _defineProperty(obj, key, value) { + if (key in obj) { + Object.defineProperty(obj, key, { + value: value, + enumerable: true, + configurable: true, + writable: true + }); + } else { + obj[key] = value; + } + + return obj; +} + + + + + +var RobotsReport = +/*#__PURE__*/ +function (_React$Component) { + _inherits(RobotsReport, _React$Component); + + function RobotsReport() { + var _getPrototypeOf2; + + var _this; + + _classCallCheck(this, RobotsReport); + + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + + _this = _possibleConstructorReturn(this, (_getPrototypeOf2 = _getPrototypeOf(RobotsReport)).call.apply(_getPrototypeOf2, [this].concat(args))); + + _defineProperty(_assertThisInitialized(_this), "state", { + website: JSON.parse(_this.props.website), + loading: true, + icon: '/favicon.png', + title: '', + description: '', + url: '', + image: '' + }); + + _defineProperty(_assertThisInitialized(_this), "update", + /*#__PURE__*/ + _asyncToGenerator( + /*#__PURE__*/ + _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee() { + var refresh, + endpoint, + response, + _args = arguments; + return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee$(_context) { + while (1) { + switch (_context.prev = _context.next) { + case 0: + refresh = _args.length > 0 && _args[0] !== undefined ? _args[0] : false; + _context.next = 3; + return _this.setState({ + loading: true + }); + + case 3: + endpoint = window.location.href + '/opengraph'; + + if (refresh) { + endpoint += '?refresh=1'; + } + + _context.next = 7; + return window.axios.get(endpoint); + + case 7: + response = _context.sent.data; + + _this.setState(_objectSpread({}, response, { + loading: false + }), function () { + if (_this.state.icon) { + document.getElementById('favicon').href = _this.state.icon; + } + }); + + case 9: + case "end": + return _context.stop(); + } + } + }, _callee); + }))); + + _defineProperty(_assertThisInitialized(_this), "forceUpdate", function () { + return _this.update(true); + }); + + _defineProperty(_assertThisInitialized(_this), "renderReport", function () { + var _this$state = _this.state, + title = _this$state.title, + description = _this$state.description, + image = _this$state.image, + url = _this$state.url; + + if (!title) { + return react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(_helpers__WEBPACK_IMPORTED_MODULE_3__["NoData"], null); + } + + return react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement("div", { + className: "flex flex-wrap items-center" + }, react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement("div", { + className: "w-1/2 pr-8" + }, react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement("img", { + className: "w-full h-auto shadow-lg", + src: image, + alt: title + })), react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement("div", { + className: "w-1/2" + }, react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement("h2", null, title), react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement("p", null, description), react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement("a", { + href: url, + rel: "noreferrer noopener", + target: "_blank" + }, react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement("small", null, url)))); + }); + + _defineProperty(_assertThisInitialized(_this), "renderBusy", function () { + var _this$state2 = _this.state, + now = _this$state2.now, + previous = _this$state2.previous; + + if (now && previous) { + return _this.renderReport(); + } + + return react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(antd__WEBPACK_IMPORTED_MODULE_2__["Spin"], null); + }); + + return _this; + } + + _createClass(RobotsReport, [{ + key: "componentDidMount", + value: function componentDidMount() { + this.update(); + } + }, { + key: "render", + value: function render() { + var loading = this.state.loading; + return react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement("div", null, react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(antd__WEBPACK_IMPORTED_MODULE_2__["Card"], { + title: "Open Graph", + extra: react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(antd__WEBPACK_IMPORTED_MODULE_2__["Button"], { + loading: loading, + onClick: this.forceUpdate + }, "Refresh") + }, !loading ? this.renderReport() : this.renderBusy())); + } + }]); + + return RobotsReport; +}(react__WEBPACK_IMPORTED_MODULE_1___default.a.Component); + + + /***/ }), /***/ "./resources/js/components/RobotsReport.js": @@ -323808,6 +324149,8 @@ __webpack_require__.r(__webpack_exports__); /* harmony import */ var _components_DnsReport__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./components/DnsReport */ "./resources/js/components/DnsReport.js"); /* harmony import */ var _components_RobotsReport__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./components/RobotsReport */ "./resources/js/components/RobotsReport.js"); /* harmony import */ var _components_UptimeReport__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./components/UptimeReport */ "./resources/js/components/UptimeReport.js"); +/* harmony import */ var _components_OpenGraph__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./components/OpenGraph */ "./resources/js/components/OpenGraph.js"); + @@ -323819,8 +324162,9 @@ window.axios.defaults.headers.common['X-Requested-With'] = 'XMLHttpRequest'; var token = document.head.querySelector('meta[name="csrf-token"]'); window.axios.defaults.headers.common['X-CSRF-TOKEN'] = token.content; _maelstrom_cms_toolkit_js_support_Registry__WEBPACK_IMPORTED_MODULE_0__["default"].register({ - ButtonColumn: _components_ButtonColumn__WEBPACK_IMPORTED_MODULE_1__["default"], + OpenGraph: _components_OpenGraph__WEBPACK_IMPORTED_MODULE_6__["default"], DnsReport: _components_DnsReport__WEBPACK_IMPORTED_MODULE_3__["default"], + ButtonColumn: _components_ButtonColumn__WEBPACK_IMPORTED_MODULE_1__["default"], RobotsReport: _components_RobotsReport__WEBPACK_IMPORTED_MODULE_4__["default"], UptimeReport: _components_UptimeReport__WEBPACK_IMPORTED_MODULE_5__["default"], CertificateReport: _components_CertificateReport__WEBPACK_IMPORTED_MODULE_2__["default"] @@ -323848,8 +324192,8 @@ __webpack_require__(/*! @maelstrom-cms/toolkit */ "./node_modules/@maelstrom-cms /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { -__webpack_require__(/*! /Users/storm/Documents/Websites/odin/resources/js/maelstrom.js */"./resources/js/maelstrom.js"); -module.exports = __webpack_require__(/*! /Users/storm/Documents/Websites/odin/resources/sass/maelstrom.css */"./resources/sass/maelstrom.css"); +__webpack_require__(/*! /Users/owen/Sites/odin/resources/js/maelstrom.js */"./resources/js/maelstrom.js"); +module.exports = __webpack_require__(/*! /Users/owen/Sites/odin/resources/sass/maelstrom.css */"./resources/sass/maelstrom.css"); /***/ }), diff --git a/resources/js/components/OpenGraph.js b/resources/js/components/OpenGraph.js new file mode 100644 index 0000000..9e7a048 --- /dev/null +++ b/resources/js/components/OpenGraph.js @@ -0,0 +1,93 @@ +import React from 'react'; +import { Card, Button, Spin } from 'antd'; +import { NoData } from '../helpers' + +export default class RobotsReport extends React.Component { + + state = { + website: JSON.parse(this.props.website), + loading: true, + icon: '/favicon.png', + title: '', + description: '', + url: '', + image: '', + }; + + componentDidMount() { + this.update(); + }; + + update = async(refresh = false) => { + await this.setState({ + loading: true + }); + + let endpoint = window.location.href + '/opengraph'; + + if (refresh) { + endpoint += '?refresh=1'; + } + + const response = (await window.axios.get(endpoint)).data; + + this.setState({ + ...response, + loading: false, + }, () => { + if (this.state.icon) { + document.getElementById('favicon').href = this.state.icon + } + }); + }; + + forceUpdate = () => { + return this.update(true); + }; + + renderReport = () => { + const { title, description, image, url } = this.state; + + if (!title) { + return + } + + return ( + + ) + }; + + renderBusy = () => { + const { now, previous } = this.state; + + if (now && previous) { + return this.renderReport() + } + + return + }; + + render() { + const { loading } = this.state; + + return ( +
+ Refresh } + > + { !loading ? this.renderReport() : this.renderBusy() } + +
+ ) + } +} diff --git a/resources/js/maelstrom.js b/resources/js/maelstrom.js index 76c2499..363c49d 100644 --- a/resources/js/maelstrom.js +++ b/resources/js/maelstrom.js @@ -4,6 +4,7 @@ import CertificateReport from './components/CertificateReport'; import DnsReport from './components/DnsReport'; import RobotsReport from './components/RobotsReport'; import UptimeReport from './components/UptimeReport'; +import OpenGraph from './components/OpenGraph'; window.axios = require('axios'); window.axios.defaults.headers.common['X-Requested-With'] = 'XMLHttpRequest'; @@ -12,8 +13,9 @@ let token = document.head.querySelector('meta[name="csrf-token"]'); window.axios.defaults.headers.common['X-CSRF-TOKEN'] = token.content; Registry.register({ - ButtonColumn, + OpenGraph, DnsReport, + ButtonColumn, RobotsReport, UptimeReport, CertificateReport, diff --git a/resources/views/vendor/maelstrom/layouts/wrapper.blade.php b/resources/views/vendor/maelstrom/layouts/wrapper.blade.php index 738d222..751ff99 100644 --- a/resources/views/vendor/maelstrom/layouts/wrapper.blade.php +++ b/resources/views/vendor/maelstrom/layouts/wrapper.blade.php @@ -2,6 +2,7 @@ @yield('title') :: {{ config('maelstrom.title_prefix', config('maelstrom.title')) }} + @include('maelstrom::partials.head-meta') diff --git a/resources/views/websites-show.blade.php b/resources/views/websites-show.blade.php index 3066db8..dc8eb32 100644 --- a/resources/views/websites-show.blade.php +++ b/resources/views/websites-show.blade.php @@ -16,6 +16,8 @@ @section('content') +
+ @if ($website->uptime_enabled)
@endif @@ -32,6 +34,8 @@
@endif + + @endsection @section('footer') diff --git a/routes/web.php b/routes/web.php index b848685..6ed252f 100644 --- a/routes/web.php +++ b/routes/web.php @@ -23,4 +23,5 @@ Route::get('websites/{website}/uptime', 'UptimeReportController'); Route::get('websites/{website}/ssl', 'CertificateReportController'); Route::get('websites/{website}/dns', 'DnsCompareController'); + Route::get('websites/{website}/opengraph', 'OpenGraphController'); });