]> BookStack Code Mirror - bookstack/commitdiff
Moved from debugbar to clockwork
authorDan Brown <redacted>
Sat, 30 Oct 2021 21:03:36 +0000 (22:03 +0100)
committerDan Brown <redacted>
Sat, 30 Oct 2021 21:03:36 +0000 (22:03 +0100)
app/Config/clockwork.php [new file with mode: 0644]
composer.json
composer.lock
readme.md
storage/clockwork/.gitignore [new file with mode: 0644]

diff --git a/app/Config/clockwork.php b/app/Config/clockwork.php
new file mode 100644 (file)
index 0000000..ff9929d
--- /dev/null
@@ -0,0 +1,415 @@
+<?php
+
+return [
+
+       /*
+       |------------------------------------------------------------------------------------------------------------------
+       | Enable Clockwork
+       |------------------------------------------------------------------------------------------------------------------
+       |
+       | Clockwork is enabled by default only when your application is in debug mode. Here you can explicitly enable or
+       | disable Clockwork. When disabled, no data is collected and the api and web ui are inactive.
+       |
+       */
+
+       'enable' => env('CLOCKWORK_ENABLE', false),
+
+       /*
+       |------------------------------------------------------------------------------------------------------------------
+       | Features
+       |------------------------------------------------------------------------------------------------------------------
+       |
+       | You can enable or disable various Clockwork features here. Some features have additional settings (eg. slow query
+       | threshold for database queries).
+       |
+       */
+
+       'features' => [
+
+               // Cache usage stats and cache queries including results
+               'cache' => [
+                       'enabled' => true,
+
+                       // Collect cache queries
+                       'collect_queries' => true,
+
+                       // Collect values from cache queries (high performance impact with a very high number of queries)
+                       'collect_values' => false
+               ],
+
+               // Database usage stats and queries
+               'database' => [
+                       'enabled' => true,
+
+                       // Collect database queries (high performance impact with a very high number of queries)
+                       'collect_queries' => true,
+
+                       // Collect details of models updates (high performance impact with a lot of model updates)
+                       'collect_models_actions' => true,
+
+                       // Collect details of retrieved models (very high performance impact with a lot of models retrieved)
+                       'collect_models_retrieved' => false,
+
+                       // Query execution time threshold in miliseconds after which the query will be marked as slow
+                       'slow_threshold' => null,
+
+                       // Collect only slow database queries
+                       'slow_only' => false,
+
+                       // Detect and report duplicate (N+1) queries
+                       'detect_duplicate_queries' => false
+               ],
+
+               // Dispatched events
+               'events' => [
+                       'enabled' => true,
+
+                       // Ignored events (framework events are ignored by default)
+                       'ignored_events' => [
+                               // App\Events\UserRegistered::class,
+                               // 'user.registered'
+                       ],
+               ],
+
+               // Laravel log (you can still log directly to Clockwork with laravel log disabled)
+               'log' => [
+                       'enabled' => true
+               ],
+
+               // Sent notifications
+               'notifications' => [
+                       'enabled' => true,
+               ],
+
+               // Performance metrics
+               'performance' => [
+                       // Allow collecting of client metrics. Requires separate clockwork-browser npm package.
+                       'client_metrics' => true
+               ],
+
+               // Dispatched queue jobs
+               'queue' => [
+                       'enabled' => true
+               ],
+
+               // Redis commands
+               'redis' => [
+                       'enabled' => true
+               ],
+
+               // Routes list
+               'routes' => [
+                       'enabled' => false,
+
+                       // Collect only routes from particular namespaces (only application routes by default)
+                       'only_namespaces' => [ 'App' ]
+               ],
+
+               // Rendered views
+               'views' => [
+                       'enabled' => true,
+
+                       // Collect views including view data (high performance impact with a high number of views)
+                       'collect_data' => false,
+
+                       // Use Twig profiler instead of Laravel events for apps using laravel-twigbridge (more precise, but does
+                       // not support collecting view data)
+                       'use_twig_profiler' => false
+               ]
+
+       ],
+
+       /*
+       |------------------------------------------------------------------------------------------------------------------
+       | Enable web UI
+       |------------------------------------------------------------------------------------------------------------------
+       |
+       | Clockwork comes with a web UI accessibla via http://your.app/clockwork. Here you can enable or disable this
+       | feature. You can also set a custom path for the web UI.
+       |
+       */
+
+       'web' => true,
+
+       /*
+       |------------------------------------------------------------------------------------------------------------------
+       | Enable toolbar
+       |------------------------------------------------------------------------------------------------------------------
+       |
+       | Clockwork can show a toolbar with basic metrics on all responses. Here you can enable or disable this feature.
+       | Requires a separate clockwork-browser npm library.
+       | For installation instructions see https://underground.works/clockwork/#docs-viewing-data
+       |
+       */
+
+       'toolbar' => true,
+
+       /*
+       |------------------------------------------------------------------------------------------------------------------
+       | HTTP requests collection
+       |------------------------------------------------------------------------------------------------------------------
+       |
+       | Clockwork collects data about HTTP requests to your app. Here you can choose which requests should be collected.
+       |
+       */
+
+       'requests' => [
+               // With on-demand mode enabled, Clockwork will only profile requests when the browser extension is open or you
+               // manually pass a "clockwork-profile" cookie or get/post data key.
+               // Optionally you can specify a "secret" that has to be passed as the value to enable profiling.
+               'on_demand' => false,
+
+               // Collect only errors (requests with HTTP 4xx and 5xx responses)
+               'errors_only' => false,
+
+               // Response time threshold in miliseconds after which the request will be marked as slow
+               'slow_threshold' => null,
+
+               // Collect only slow requests
+               'slow_only' => false,
+
+               // Sample the collected requests (eg. set to 100 to collect only 1 in 100 requests)
+               'sample' => false,
+
+               // List of URIs that should not be collected
+               'except' => [
+                       '/horizon/.*', // Laravel Horizon requests
+                       '/telescope/.*', // Laravel Telescope requests
+                       '/_debugbar/.*', // Laravel DebugBar requests
+               ],
+
+               // List of URIs that should be collected, any other URI will not be collected if not empty
+               'only' => [
+                       // '/api/.*'
+               ],
+
+               // Don't collect OPTIONS requests, mostly used in the CSRF pre-flight requests and are rarely of interest
+               'except_preflight' => true
+       ],
+
+       /*
+       |------------------------------------------------------------------------------------------------------------------
+       | Artisan commands collection
+       |------------------------------------------------------------------------------------------------------------------
+       |
+       | Clockwork can collect data about executed artisan commands. Here you can enable and configure which commands
+       | should be collected.
+       |
+       */
+
+       'artisan' => [
+               // Enable or disable collection of executed Artisan commands
+               'collect' => false,
+
+               // List of commands that should not be collected (built-in commands are not collected by default)
+               'except' => [
+                       // 'inspire'
+               ],
+
+               // List of commands that should be collected, any other command will not be collected if not empty
+               'only' => [
+                       // 'inspire'
+               ],
+
+               // Enable or disable collection of command output
+               'collect_output' => false,
+
+               // Enable or disable collection of built-in Laravel commands
+               'except_laravel_commands' => true
+       ],
+
+       /*
+       |------------------------------------------------------------------------------------------------------------------
+       | Queue jobs collection
+       |------------------------------------------------------------------------------------------------------------------
+       |
+       | Clockwork can collect data about executed queue jobs. Here you can enable and configure which queue jobs should
+       | be collected.
+       |
+       */
+
+       'queue' => [
+               // Enable or disable collection of executed queue jobs
+               'collect' => false,
+
+               // List of queue jobs that should not be collected
+               'except' => [
+                       // App\Jobs\ExpensiveJob::class
+               ],
+
+               // List of queue jobs that should be collected, any other queue job will not be collected if not empty
+               'only' => [
+                       // App\Jobs\BuggyJob::class
+               ]
+       ],
+
+       /*
+       |------------------------------------------------------------------------------------------------------------------
+       | Tests collection
+       |------------------------------------------------------------------------------------------------------------------
+       |
+       | Clockwork can collect data about executed tests. Here you can enable and configure which tests should be
+       | collected.
+       |
+       */
+
+       'tests' => [
+               // Enable or disable collection of ran tests
+               'collect' => false,
+
+               // List of tests that should not be collected
+               'except' => [
+                       // Tests\Unit\ExampleTest::class
+               ]
+       ],
+
+       /*
+       |------------------------------------------------------------------------------------------------------------------
+       | Enable data collection when Clockwork is disabled
+       |------------------------------------------------------------------------------------------------------------------
+       |
+       | You can enable this setting to collect data even when Clockwork is disabled. Eg. for future analysis.
+       |
+       */
+
+       'collect_data_always' => false,
+
+       /*
+       |------------------------------------------------------------------------------------------------------------------
+       | Metadata storage
+       |------------------------------------------------------------------------------------------------------------------
+       |
+       | Configure how is the metadata collected by Clockwork stored. Two options are available:
+       |   - files - A simple fast storage implementation storing data in one-per-request files.
+       |   - sql - Stores requests in a sql database. Supports MySQL, Postgresql, Sqlite and requires PDO.
+       |
+       */
+
+       'storage' => 'files',
+
+       // Path where the Clockwork metadata is stored
+       'storage_files_path' => storage_path('clockwork'),
+
+       // Compress the metadata files using gzip, trading a little bit of performance for lower disk usage
+       'storage_files_compress' => false,
+
+       // SQL database to use, can be a name of database configured in database.php or a path to a sqlite file
+       'storage_sql_database' => storage_path('clockwork.sqlite'),
+
+       // SQL table name to use, the table is automatically created and udpated when needed
+       'storage_sql_table' => 'clockwork',
+
+       // Maximum lifetime of collected metadata in minutes, older requests will automatically be deleted, false to disable
+       'storage_expiration' => 60 * 24 * 7,
+
+       /*
+       |------------------------------------------------------------------------------------------------------------------
+       | Authentication
+       |------------------------------------------------------------------------------------------------------------------
+       |
+       | Clockwork can be configured to require authentication before allowing access to the collected data. This might be
+       | useful when the application is publicly accessible. Setting to true will enable a simple authentication with a
+       | pre-configured password. You can also pass a class name of a custom implementation.
+       |
+       */
+
+       'authentication' => false,
+
+       // Password for the simple authentication
+       'authentication_password' => 'VerySecretPassword',
+
+       /*
+       |------------------------------------------------------------------------------------------------------------------
+       | Stack traces collection
+       |------------------------------------------------------------------------------------------------------------------
+       |
+       | Clockwork can collect stack traces for log messages and certain data like database queries. Here you can set
+       | whether to collect stack traces, limit the number of collected frames and set further configuration. Collecting
+       | long stack traces considerably increases metadata size.
+       |
+       */
+
+       'stack_traces' => [
+               // Enable or disable collecting of stack traces
+               'enabled' => true,
+
+               // Limit the number of frames to be collected
+               'limit' => 10,
+
+               // List of vendor names to skip when determining caller, common vendors are automatically added
+               'skip_vendors' => [
+                       // 'phpunit'
+               ],
+
+               // List of namespaces to skip when determining caller
+               'skip_namespaces' => [
+                       // 'Laravel'
+               ],
+
+               // List of class names to skip when determining caller
+               'skip_classes' => [
+                       // App\CustomLog::class
+               ]
+
+       ],
+
+       /*
+       |------------------------------------------------------------------------------------------------------------------
+       | Serialization
+       |------------------------------------------------------------------------------------------------------------------
+       |
+       | Clockwork serializes the collected data to json for storage and transfer. Here you can configure certain aspects
+       | of serialization. Serialization has a large effect on the cpu time and memory usage.
+       |
+       */
+
+       // Maximum depth of serialized multi-level arrays and objects
+       'serialization_depth' => 10,
+
+       // A list of classes that will never be serialized (eg. a common service container class)
+       'serialization_blackbox' => [
+               \Illuminate\Container\Container::class,
+               \Illuminate\Foundation\Application::class,
+       ],
+
+       /*
+       |------------------------------------------------------------------------------------------------------------------
+       | Register helpers
+       |------------------------------------------------------------------------------------------------------------------
+       |
+       | Clockwork comes with a "clock" global helper function. You can use this helper to quickly log something and to
+       | access the Clockwork instance.
+       |
+       */
+
+       'register_helpers' => true,
+
+       /*
+       |------------------------------------------------------------------------------------------------------------------
+       | Send Headers for AJAX request
+       |------------------------------------------------------------------------------------------------------------------
+       |
+       | When trying to collect data the AJAX method can sometimes fail if it is missing required headers. For example, an
+       | API might require a version number using Accept headers to route the HTTP request to the correct codebase.
+       |
+       */
+
+       'headers' => [
+               // 'Accept' => 'application/vnd.com.whatever.v1+json',
+       ],
+
+       /*
+       |------------------------------------------------------------------------------------------------------------------
+       | Server-Timing
+       |------------------------------------------------------------------------------------------------------------------
+       |
+       | Clockwork supports the W3C Server Timing specification, which allows for collecting a simple performance metrics
+       | in a cross-browser way. Eg. in Chrome, your app, database and timeline event timings will be shown in the Dev
+       | Tools network tab. This setting specifies the max number of timeline events that will be sent. Setting to false
+       | will disable the feature.
+       |
+       */
+
+       'server_timing' => 10
+
+];
index c1d5c1e4b77f2a6bbbe65b8773ae8b898ed06f2f..c4d9cd90439d2e380b83063d1599a63146687e99 100644 (file)
@@ -44,8 +44,8 @@
         "ssddanbrown/htmldiff": "^1.0.1"
     },
     "require-dev": {
         "ssddanbrown/htmldiff": "^1.0.1"
     },
     "require-dev": {
-        "barryvdh/laravel-debugbar": "^3.6",
         "fakerphp/faker": "^1.13.0",
         "fakerphp/faker": "^1.13.0",
+        "itsgoingd/clockwork": "^5.1",
         "mockery/mockery": "^1.4.2",
         "phpunit/phpunit": "^9.5.3",
         "symfony/dom-crawler": "^5.3",
         "mockery/mockery": "^1.4.2",
         "phpunit/phpunit": "^9.5.3",
         "symfony/dom-crawler": "^5.3",
index 17e57df7109c8d5c9588cd9671c427cdf56018ba..7231c82c497c7b762e4853fa2097ac3aa5383657 100644 (file)
@@ -4,7 +4,7 @@
         "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
         "This file is @generated automatically"
     ],
         "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
         "This file is @generated automatically"
     ],
-    "content-hash": "9a5d92382b2955dd7de41de5fa9f86b5",
+    "content-hash": "0dfe612653577a14906a0bb031c67a97",
     "packages": [
         {
             "name": "aws/aws-crt-php",
     "packages": [
         {
             "name": "aws/aws-crt-php",
         }
     ],
     "packages-dev": [
         }
     ],
     "packages-dev": [
-        {
-            "name": "barryvdh/laravel-debugbar",
-            "version": "v3.6.4",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/barryvdh/laravel-debugbar.git",
-                "reference": "3c2d678269ba60e178bcd93e36f6a91c36b727f1"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/barryvdh/laravel-debugbar/zipball/3c2d678269ba60e178bcd93e36f6a91c36b727f1",
-                "reference": "3c2d678269ba60e178bcd93e36f6a91c36b727f1",
-                "shasum": ""
-            },
-            "require": {
-                "illuminate/routing": "^6|^7|^8",
-                "illuminate/session": "^6|^7|^8",
-                "illuminate/support": "^6|^7|^8",
-                "maximebf/debugbar": "^1.17.2",
-                "php": ">=7.2",
-                "symfony/debug": "^4.3|^5",
-                "symfony/finder": "^4.3|^5"
-            },
-            "require-dev": {
-                "mockery/mockery": "^1.3.3",
-                "orchestra/testbench-dusk": "^4|^5|^6",
-                "phpunit/phpunit": "^8.5|^9.0",
-                "squizlabs/php_codesniffer": "^3.5"
-            },
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "3.6-dev"
-                },
-                "laravel": {
-                    "providers": [
-                        "Barryvdh\\Debugbar\\ServiceProvider"
-                    ],
-                    "aliases": {
-                        "Debugbar": "Barryvdh\\Debugbar\\Facade"
-                    }
-                }
-            },
-            "autoload": {
-                "psr-4": {
-                    "Barryvdh\\Debugbar\\": "src/"
-                },
-                "files": [
-                    "src/helpers.php"
-                ]
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "authors": [
-                {
-                    "name": "Barry vd. Heuvel",
-                    "email": "[email protected]"
-                }
-            ],
-            "description": "PHP Debugbar integration for Laravel",
-            "keywords": [
-                "debug",
-                "debugbar",
-                "laravel",
-                "profiler",
-                "webprofiler"
-            ],
-            "support": {
-                "issues": "https://github.com/barryvdh/laravel-debugbar/issues",
-                "source": "https://github.com/barryvdh/laravel-debugbar/tree/v3.6.4"
-            },
-            "funding": [
-                {
-                    "url": "https://fruitcake.nl",
-                    "type": "custom"
-                },
-                {
-                    "url": "https://github.com/barryvdh",
-                    "type": "github"
-                }
-            ],
-            "time": "2021-10-21T10:57:31+00:00"
-        },
         {
             "name": "doctrine/instantiator",
             "version": "1.4.0",
         {
             "name": "doctrine/instantiator",
             "version": "1.4.0",
             "time": "2020-07-09T08:09:16+00:00"
         },
         {
             "time": "2020-07-09T08:09:16+00:00"
         },
         {
-            "name": "maximebf/debugbar",
-            "version": "v1.17.2",
+            "name": "itsgoingd/clockwork",
+            "version": "v5.1.0",
             "source": {
                 "type": "git",
             "source": {
                 "type": "git",
-                "url": "https://github.com/maximebf/php-debugbar.git",
-                "reference": "3541f09f09c003c4a9ff7ddb0eb3361a7f14d418"
+                "url": "https://github.com/itsgoingd/clockwork.git",
+                "reference": "b963dee47429a49c9669981cfa9a8362ce209278"
             },
             "dist": {
                 "type": "zip",
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/maximebf/php-debugbar/zipball/3541f09f09c003c4a9ff7ddb0eb3361a7f14d418",
-                "reference": "3541f09f09c003c4a9ff7ddb0eb3361a7f14d418",
+                "url": "https://api.github.com/repos/itsgoingd/clockwork/zipball/b963dee47429a49c9669981cfa9a8362ce209278",
+                "reference": "b963dee47429a49c9669981cfa9a8362ce209278",
                 "shasum": ""
             },
             "require": {
                 "shasum": ""
             },
             "require": {
-                "php": "^7.1|^8",
-                "psr/log": "^1|^2|^3",
-                "symfony/var-dumper": "^2.6|^3|^4|^5"
-            },
-            "require-dev": {
-                "phpunit/phpunit": "^7.5.20 || ^9.4.2"
-            },
-            "suggest": {
-                "kriswallsmith/assetic": "The best way to manage assets",
-                "monolog/monolog": "Log using Monolog",
-                "predis/predis": "Redis storage"
+                "ext-json": "*",
+                "php": ">=5.6",
+                "psr/log": "1.*"
             },
             "type": "library",
             "extra": {
             },
             "type": "library",
             "extra": {
-                "branch-alias": {
-                    "dev-master": "1.17-dev"
+                "laravel": {
+                    "providers": [
+                        "Clockwork\\Support\\Laravel\\ClockworkServiceProvider"
+                    ],
+                    "aliases": {
+                        "Clockwork": "Clockwork\\Support\\Laravel\\Facade"
+                    }
                 }
             },
             "autoload": {
                 "psr-4": {
                 }
             },
             "autoload": {
                 "psr-4": {
-                    "DebugBar\\": "src/DebugBar/"
+                    "Clockwork\\": "Clockwork/"
                 }
             },
             "notification-url": "https://packagist.org/downloads/",
                 }
             },
             "notification-url": "https://packagist.org/downloads/",
             ],
             "authors": [
                 {
             ],
             "authors": [
                 {
-                    "name": "Maxime Bouroumeau-Fuseau",
-                    "email": "[email protected]",
-                    "homepage": "http://maximebf.com"
-                },
-                {
-                    "name": "Barry vd. Heuvel",
-                    "email": "[email protected]"
+                    "name": "itsgoingd",
+                    "email": "[email protected]",
+                    "homepage": "https://twitter.com/itsgoingd"
                 }
             ],
                 }
             ],
-            "description": "Debug bar in the browser for php application",
-            "homepage": "https://github.com/maximebf/php-debugbar",
+            "description": "php dev tools in your browser",
+            "homepage": "https://underground.works/clockwork",
             "keywords": [
             "keywords": [
-                "debug",
-                "debugbar"
+                "Devtools",
+                "debugging",
+                "laravel",
+                "logging",
+                "lumen",
+                "profiling",
+                "slim"
             ],
             "support": {
             ],
             "support": {
-                "issues": "https://github.com/maximebf/php-debugbar/issues",
-                "source": "https://github.com/maximebf/php-debugbar/tree/v1.17.2"
+                "issues": "https://github.com/itsgoingd/clockwork/issues",
+                "source": "https://github.com/itsgoingd/clockwork/tree/v5.1.0"
             },
             },
-            "time": "2021-10-18T09:39:00+00:00"
+            "funding": [
+                {
+                    "url": "https://github.com/itsgoingd",
+                    "type": "github"
+                }
+            ],
+            "time": "2021-08-07T23:04:17+00:00"
         },
         {
             "name": "mockery/mockery",
         },
         {
             "name": "mockery/mockery",
             ],
             "time": "2020-09-28T06:39:44+00:00"
         },
             ],
             "time": "2020-09-28T06:39:44+00:00"
         },
-        {
-            "name": "symfony/debug",
-            "version": "v4.4.31",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/symfony/debug.git",
-                "reference": "43ede438d4cb52cd589ae5dc070e9323866ba8e0"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/symfony/debug/zipball/43ede438d4cb52cd589ae5dc070e9323866ba8e0",
-                "reference": "43ede438d4cb52cd589ae5dc070e9323866ba8e0",
-                "shasum": ""
-            },
-            "require": {
-                "php": ">=7.1.3",
-                "psr/log": "^1|^2|^3"
-            },
-            "conflict": {
-                "symfony/http-kernel": "<3.4"
-            },
-            "require-dev": {
-                "symfony/http-kernel": "^3.4|^4.0|^5.0"
-            },
-            "type": "library",
-            "autoload": {
-                "psr-4": {
-                    "Symfony\\Component\\Debug\\": ""
-                },
-                "exclude-from-classmap": [
-                    "/Tests/"
-                ]
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "authors": [
-                {
-                    "name": "Fabien Potencier",
-                    "email": "[email protected]"
-                },
-                {
-                    "name": "Symfony Community",
-                    "homepage": "https://symfony.com/contributors"
-                }
-            ],
-            "description": "Provides tools to ease debugging PHP code",
-            "homepage": "https://symfony.com",
-            "support": {
-                "source": "https://github.com/symfony/debug/tree/v4.4.31"
-            },
-            "funding": [
-                {
-                    "url": "https://symfony.com/sponsor",
-                    "type": "custom"
-                },
-                {
-                    "url": "https://github.com/fabpot",
-                    "type": "github"
-                },
-                {
-                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
-                    "type": "tidelift"
-                }
-            ],
-            "time": "2021-09-24T13:30:14+00:00"
-        },
         {
             "name": "symfony/dom-crawler",
             "version": "v5.3.7",
         {
             "name": "symfony/dom-crawler",
             "version": "v5.3.7",
index 17ac9641bdc266d3940afb01b17761d8fe1a9a6f..0c9cf66e98ccc1a6ba864acbd140505b82eadd5c 100644 (file)
--- a/readme.md
+++ b/readme.md
@@ -187,11 +187,8 @@ These are the great open-source projects used to help build BookStack:
 * [Dropzone.js](http://www.dropzonejs.com/)
 * [clipboard.js](https://clipboardjs.com/)
 * [markdown-it](https://github.com/markdown-it/markdown-it) and [markdown-it-task-lists](https://github.com/revin/markdown-it-task-lists)
 * [Dropzone.js](http://www.dropzonejs.com/)
 * [clipboard.js](https://clipboardjs.com/)
 * [markdown-it](https://github.com/markdown-it/markdown-it) and [markdown-it-task-lists](https://github.com/revin/markdown-it-task-lists)
-* [BarryVD](https://github.com/barryvdh)
-    * [Debugbar](https://github.com/barryvdh/laravel-debugbar)
-    * [Dompdf](https://github.com/barryvdh/laravel-dompdf)
-    * [Snappy (WKHTML2PDF)](https://github.com/barryvdh/laravel-snappy)
-    * [Laravel IDE helper](https://github.com/barryvdh/laravel-ide-helper)
+* [BarryVD/Dompdf](https://github.com/barryvdh/laravel-dompdf)
+* [BarryVD/Snappy (WKHTML2PDF)](https://github.com/barryvdh/laravel-snappy)
 * [WKHTMLtoPDF](http://wkhtmltopdf.org/index.html)
 * [diagrams.net](https://github.com/jgraph/drawio)
 * [OneLogin's SAML PHP Toolkit](https://github.com/onelogin/php-saml)
 * [WKHTMLtoPDF](http://wkhtmltopdf.org/index.html)
 * [diagrams.net](https://github.com/jgraph/drawio)
 * [OneLogin's SAML PHP Toolkit](https://github.com/onelogin/php-saml)
@@ -200,4 +197,5 @@ These are the great open-source projects used to help build BookStack:
 * [StyleCI](https://styleci.io/)
 * [pragmarx/google2fa](https://github.com/antonioribeiro/google2fa)
 * [Bacon/BaconQrCode](https://github.com/Bacon/BaconQrCode)
 * [StyleCI](https://styleci.io/)
 * [pragmarx/google2fa](https://github.com/antonioribeiro/google2fa)
 * [Bacon/BaconQrCode](https://github.com/Bacon/BaconQrCode)
-* [phpseclib](https://github.com/phpseclib/phpseclib)
\ No newline at end of file
+* [phpseclib](https://github.com/phpseclib/phpseclib)
+* [Clockwork](https://github.com/itsgoingd/clockwork)
\ No newline at end of file
diff --git a/storage/clockwork/.gitignore b/storage/clockwork/.gitignore
new file mode 100644 (file)
index 0000000..3fac1bf
--- /dev/null
@@ -0,0 +1,3 @@
+*.json
+*.json.gz
+index