From 51eb91757053c7314d8e8a505b42b462b1fdecef Mon Sep 17 00:00:00 2001 From: Oliver Davies Date: Wed, 14 Apr 2021 14:39:04 +0100 Subject: [PATCH] Add rollbar module --- composer.json | 1 + composer.lock | 678 +++++++++++++++++- web/modules/contrib/rollbar/README.md | 4 + web/modules/contrib/rollbar/composer.json | 11 + .../config/install/rollbar.settings.yml | 10 + .../rollbar/config/schema/rollbar.schema.yml | 31 + web/modules/contrib/rollbar/js/rollbar.js | 12 + web/modules/contrib/rollbar/rollbar.info.yml | 6 + web/modules/contrib/rollbar/rollbar.install | 16 + .../contrib/rollbar/rollbar.libraries.yml | 7 + .../contrib/rollbar/rollbar.links.menu.yml | 5 + web/modules/contrib/rollbar/rollbar.module | 43 ++ .../contrib/rollbar/rollbar.permissions.yml | 2 + .../contrib/rollbar/rollbar.routing.yml | 9 + .../contrib/rollbar/rollbar.services.yml | 6 + .../rollbar/src/Form/RollbarSettingsForm.php | 125 ++++ .../rollbar/src/Logger/RollbarLogger.php | 103 +++ 17 files changed, 1068 insertions(+), 1 deletion(-) create mode 100644 web/modules/contrib/rollbar/README.md create mode 100644 web/modules/contrib/rollbar/composer.json create mode 100644 web/modules/contrib/rollbar/config/install/rollbar.settings.yml create mode 100644 web/modules/contrib/rollbar/config/schema/rollbar.schema.yml create mode 100644 web/modules/contrib/rollbar/js/rollbar.js create mode 100644 web/modules/contrib/rollbar/rollbar.info.yml create mode 100644 web/modules/contrib/rollbar/rollbar.install create mode 100644 web/modules/contrib/rollbar/rollbar.libraries.yml create mode 100644 web/modules/contrib/rollbar/rollbar.links.menu.yml create mode 100644 web/modules/contrib/rollbar/rollbar.module create mode 100644 web/modules/contrib/rollbar/rollbar.permissions.yml create mode 100644 web/modules/contrib/rollbar/rollbar.routing.yml create mode 100644 web/modules/contrib/rollbar/rollbar.services.yml create mode 100644 web/modules/contrib/rollbar/src/Form/RollbarSettingsForm.php create mode 100644 web/modules/contrib/rollbar/src/Logger/RollbarLogger.php diff --git a/composer.json b/composer.json index c8943be..eb77600 100644 --- a/composer.json +++ b/composer.json @@ -45,6 +45,7 @@ "drush/drush": "^10", "nesbot/carbon": "^2.33", "platformsh/config-reader": "^2.4", + "rollbar/rollbar": "^2.1", "symfony/config": "^3.4", "tightenco/collect": "^8.17" }, diff --git a/composer.lock b/composer.lock index 0175129..a360f1b 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "7d5efbcb8b626fde56d467b4738f49a5", + "content-hash": "6995d3c5d11d0dd78e055a9bfaafc749", "packages": [ { "name": "asm89/stack-cors", @@ -56,6 +56,10 @@ "cors", "stack" ], + "support": { + "issues": "https://github.com/asm89/stack-cors/issues", + "source": "https://github.com/asm89/stack-cors/tree/1.3.0" + }, "time": "2019-12-24T22:41:47+00:00" }, { @@ -118,6 +122,10 @@ "assertion", "validation" ], + "support": { + "issues": "https://github.com/beberlei/assert/issues", + "source": "https://github.com/beberlei/assert/tree/v3" + }, "time": "2019-12-19T17:51:41+00:00" }, { @@ -293,6 +301,10 @@ "zend", "zikula" ], + "support": { + "issues": "https://github.com/composer/installers/issues", + "source": "https://github.com/composer/installers/tree/v1.9.0" + }, "funding": [ { "url": "https://packagist.com", @@ -364,6 +376,11 @@ "validation", "versioning" ], + "support": { + "irc": "irc://irc.freenode.org/composer", + "issues": "https://github.com/composer/semver/issues", + "source": "https://github.com/composer/semver/tree/1.5.1" + }, "time": "2020-01-13T12:06:48+00:00" }, { @@ -551,6 +568,10 @@ } ], "description": "Provide configuration services for a commandline tool.", + "support": { + "issues": "https://github.com/consolidation/config/issues", + "source": "https://github.com/consolidation/config/tree/master" + }, "time": "2019-03-03T19:37:04+00:00" }, { @@ -618,6 +639,9 @@ } ], "description": "This project uses dflydev/dot-access-data to provide simple output filtering for applications built with annotated-command / Robo.", + "support": { + "source": "https://github.com/consolidation/filter-via-dot-access-data/tree/1.0.0" + }, "time": "2019-01-18T06:05:07+00:00" }, { @@ -708,6 +732,10 @@ } ], "description": "Improved Psr-3 / Psr\\Log logger based on Symfony Console components.", + "support": { + "issues": "https://github.com/consolidation/log/issues", + "source": "https://github.com/consolidation/log/tree/master" + }, "time": "2019-01-01T17:30:51+00:00" }, { @@ -984,6 +1012,10 @@ } ], "description": "Provides a self:update command for Symfony Console applications.", + "support": { + "issues": "https://github.com/consolidation/self-update/issues", + "source": "https://github.com/consolidation/self-update/tree/1.2.0" + }, "time": "2020-04-13T02:49:20+00:00" }, { @@ -1110,6 +1142,10 @@ } ], "description": "A thin wrapper around the Symfony Process Component that allows applications to use the Site Alias library to specify the target for a remote call.", + "support": { + "issues": "https://github.com/consolidation/site-process/issues", + "source": "https://github.com/consolidation/site-process/tree/2.1.0" + }, "time": "2019-09-10T17:56:24+00:00" }, { @@ -1141,6 +1177,10 @@ ], "description": "Promoting the interoperability of container objects (DIC, SL, etc.)", "homepage": "https://github.com/container-interop/container-interop", + "support": { + "issues": "https://github.com/container-interop/container-interop/issues", + "source": "https://github.com/container-interop/container-interop/tree/master" + }, "abandoned": "psr/container", "time": "2017-02-14T19:40:03+00:00" }, @@ -1186,6 +1226,10 @@ } ], "description": "Provides a way to patch Composer packages.", + "support": { + "issues": "https://github.com/cweagans/composer-patches/issues", + "source": "https://github.com/cweagans/composer-patches/tree/1.7.0" + }, "time": "2020-09-30T17:56:20+00:00" }, { @@ -1245,6 +1289,10 @@ "dot", "notation" ], + "support": { + "issues": "https://github.com/dflydev/dflydev-dot-access-data/issues", + "source": "https://github.com/dflydev/dflydev-dot-access-data/tree/master" + }, "time": "2017-01-20T21:14:22+00:00" }, { @@ -1278,6 +1326,10 @@ "MIT" ], "description": "implementation of xdg base directory specification for php", + "support": { + "issues": "https://github.com/dnoegel/php-xdg-base-dir/issues", + "source": "https://github.com/dnoegel/php-xdg-base-dir/tree/v0.1.1" + }, "time": "2019-12-04T15:06:13+00:00" }, { @@ -1346,6 +1398,10 @@ "docblock", "parser" ], + "support": { + "issues": "https://github.com/doctrine/annotations/issues", + "source": "https://github.com/doctrine/annotations/tree/v1.4.0" + }, "time": "2017-02-24T16:22:25+00:00" }, { @@ -1416,6 +1472,10 @@ "cache", "caching" ], + "support": { + "issues": "https://github.com/doctrine/cache/issues", + "source": "https://github.com/doctrine/cache/tree/1.6.x" + }, "time": "2017-07-22T12:49:21+00:00" }, { @@ -1483,6 +1543,10 @@ "collections", "iterator" ], + "support": { + "issues": "https://github.com/doctrine/collections/issues", + "source": "https://github.com/doctrine/collections/tree/master" + }, "time": "2017-01-03T10:49:41+00:00" }, { @@ -1556,6 +1620,10 @@ "persistence", "spl" ], + "support": { + "issues": "https://github.com/doctrine/common/issues", + "source": "https://github.com/doctrine/common/tree/v2.7.3" + }, "time": "2017-07-22T08:35:12+00:00" }, { @@ -1623,6 +1691,9 @@ "singularize", "string" ], + "support": { + "source": "https://github.com/doctrine/inflector/tree/master" + }, "time": "2017-07-22T12:18:28+00:00" }, { @@ -1683,6 +1754,10 @@ "parser", "php" ], + "support": { + "issues": "https://github.com/doctrine/lexer/issues", + "source": "https://github.com/doctrine/lexer/tree/1.0.2" + }, "time": "2019-06-08T11:03:04+00:00" }, { @@ -2192,6 +2267,9 @@ "GPL-2.0-or-later" ], "description": "Drupal is an open source content management platform powering millions of websites and applications.", + "support": { + "source": "https://github.com/drupal/core/tree/8.9.13" + }, "time": "2021-01-19T23:11:00+00:00" }, { @@ -2239,6 +2317,9 @@ "keywords": [ "drupal" ], + "support": { + "source": "https://github.com/drupal/core-composer-scaffold/tree/8.9.4" + }, "time": "2020-08-07T22:30:30+00:00" }, { @@ -2321,6 +2402,9 @@ "GPL-2.0-or-later" ], "description": "Locked core dependencies; require this project INSTEAD OF drupal/core.", + "support": { + "source": "https://github.com/drupal/core-recommended/tree/8.9.13" + }, "time": "2021-01-19T23:11:00+00:00" }, { @@ -4151,6 +4235,12 @@ "rdfa", "sparql" ], + "support": { + "forum": "http://groups.google.com/group/easyrdf/", + "irc": "irc://chat.freenode.net/easyrdf", + "issues": "http://github.com/njh/easyrdf/issues", + "source": "https://github.com/easyrdf/easyrdf/tree/0.9.1" + }, "time": "2015-02-27T09:45:49+00:00" }, { @@ -4209,6 +4299,10 @@ "validation", "validator" ], + "support": { + "issues": "https://github.com/egulias/EmailValidator/issues", + "source": "https://github.com/egulias/EmailValidator/tree/2.1.17" + }, "time": "2020-02-13T22:36:52+00:00" }, { @@ -4256,6 +4350,10 @@ } ], "description": "Expands internal property references in PHP arrays file.", + "support": { + "issues": "https://github.com/grasmash/expander/issues", + "source": "https://github.com/grasmash/expander/tree/master" + }, "time": "2017-12-21T22:14:55+00:00" }, { @@ -4304,6 +4402,10 @@ } ], "description": "Expands internal property references in a yaml file.", + "support": { + "issues": "https://github.com/grasmash/yaml-expander/issues", + "source": "https://github.com/grasmash/yaml-expander/tree/master" + }, "time": "2017-12-16T16:06:03+00:00" }, { @@ -4371,6 +4473,10 @@ "rest", "web service" ], + "support": { + "issues": "https://github.com/guzzle/guzzle/issues", + "source": "https://github.com/guzzle/guzzle/tree/6.5" + }, "time": "2020-05-25T19:35:05+00:00" }, { @@ -4422,6 +4528,10 @@ "keywords": [ "promise" ], + "support": { + "issues": "https://github.com/guzzle/promises/issues", + "source": "https://github.com/guzzle/promises/tree/master" + }, "time": "2016-12-20T10:07:11+00:00" }, { @@ -4493,6 +4603,10 @@ "uri", "url" ], + "support": { + "issues": "https://github.com/guzzle/psr7/issues", + "source": "https://github.com/guzzle/psr7/tree/1.6.1" + }, "time": "2019-07-01T23:21:34+00:00" }, { @@ -4568,6 +4682,14 @@ "psr", "psr-7" ], + "support": { + "chat": "https://laminas.dev/chat", + "docs": "https://docs.laminas.dev/laminas-diactoros/", + "forum": "https://discourse.laminas.dev", + "issues": "https://github.com/laminas/laminas-diactoros/issues", + "rss": "https://github.com/laminas/laminas-diactoros/releases.atom", + "source": "https://github.com/laminas/laminas-diactoros" + }, "time": "2020-03-23T15:28:28+00:00" }, { @@ -4617,6 +4739,14 @@ "escaper", "laminas" ], + "support": { + "chat": "https://laminas.dev/chat", + "docs": "https://docs.laminas.dev/laminas-escaper/", + "forum": "https://discourse.laminas.dev", + "issues": "https://github.com/laminas/laminas-escaper/issues", + "rss": "https://github.com/laminas/laminas-escaper/releases.atom", + "source": "https://github.com/laminas/laminas-escaper" + }, "time": "2019-12-31T16:43:30+00:00" }, { @@ -4684,6 +4814,14 @@ "feed", "laminas" ], + "support": { + "chat": "https://laminas.dev/chat", + "docs": "https://docs.laminas.dev/laminas-feed/", + "forum": "https://discourse.laminas.dev", + "issues": "https://github.com/laminas/laminas-feed/issues", + "rss": "https://github.com/laminas/laminas-feed/releases.atom", + "source": "https://github.com/laminas/laminas-feed" + }, "time": "2020-03-29T12:36:29+00:00" }, { @@ -4734,6 +4872,14 @@ "laminas", "stdlib" ], + "support": { + "chat": "https://laminas.dev/chat", + "docs": "https://docs.laminas.dev/laminas-stdlib/", + "forum": "https://discourse.laminas.dev", + "issues": "https://github.com/laminas/laminas-stdlib/issues", + "rss": "https://github.com/laminas/laminas-stdlib/releases.atom", + "source": "https://github.com/laminas/laminas-stdlib" + }, "time": "2019-12-31T17:51:15+00:00" }, { @@ -4786,6 +4932,12 @@ "laminas", "zf" ], + "support": { + "forum": "https://discourse.laminas.dev/", + "issues": "https://github.com/laminas/laminas-zendframework-bridge/issues", + "rss": "https://github.com/laminas/laminas-zendframework-bridge/releases.atom", + "source": "https://github.com/laminas/laminas-zendframework-bridge" + }, "funding": [ { "url": "https://funding.communitybridge.org/projects/laminas-project", @@ -4861,6 +5013,12 @@ "markdown", "parser" ], + "support": { + "docs": "https://commonmark.thephpleague.com/", + "issues": "https://github.com/thephpleague/commonmark/issues", + "rss": "https://github.com/thephpleague/commonmark/releases.atom", + "source": "https://github.com/thephpleague/commonmark" + }, "time": "2019-03-28T13:52:31+00:00" }, { @@ -4999,6 +5157,10 @@ "serializer", "xml" ], + "support": { + "issues": "https://github.com/Masterminds/html5-php/issues", + "source": "https://github.com/Masterminds/html5-php/tree/2.x" + }, "time": "2017-09-04T12:26:28+00:00" }, { @@ -5048,8 +5210,104 @@ "keywords": [ "markdown" ], + "support": { + "issues": "https://github.com/michelf/php-markdown/issues", + "source": "https://github.com/michelf/php-markdown/tree/1.9.0" + }, "time": "2019-12-02T02:32:27+00:00" }, + { + "name": "monolog/monolog", + "version": "2.2.0", + "source": { + "type": "git", + "url": "https://github.com/Seldaek/monolog.git", + "reference": "1cb1cde8e8dd0f70cc0fe51354a59acad9302084" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Seldaek/monolog/zipball/1cb1cde8e8dd0f70cc0fe51354a59acad9302084", + "reference": "1cb1cde8e8dd0f70cc0fe51354a59acad9302084", + "shasum": "" + }, + "require": { + "php": ">=7.2", + "psr/log": "^1.0.1" + }, + "provide": { + "psr/log-implementation": "1.0.0" + }, + "require-dev": { + "aws/aws-sdk-php": "^2.4.9 || ^3.0", + "doctrine/couchdb": "~1.0@dev", + "elasticsearch/elasticsearch": "^7", + "graylog2/gelf-php": "^1.4.2", + "mongodb/mongodb": "^1.8", + "php-amqplib/php-amqplib": "~2.4", + "php-console/php-console": "^3.1.3", + "phpspec/prophecy": "^1.6.1", + "phpstan/phpstan": "^0.12.59", + "phpunit/phpunit": "^8.5", + "predis/predis": "^1.1", + "rollbar/rollbar": "^1.3", + "ruflin/elastica": ">=0.90 <7.0.1", + "swiftmailer/swiftmailer": "^5.3|^6.0" + }, + "suggest": { + "aws/aws-sdk-php": "Allow sending log messages to AWS services like DynamoDB", + "doctrine/couchdb": "Allow sending log messages to a CouchDB server", + "elasticsearch/elasticsearch": "Allow sending log messages to an Elasticsearch server via official client", + "ext-amqp": "Allow sending log messages to an AMQP server (1.0+ required)", + "ext-mbstring": "Allow to work properly with unicode symbols", + "ext-mongodb": "Allow sending log messages to a MongoDB server (via driver)", + "graylog2/gelf-php": "Allow sending log messages to a GrayLog2 server", + "mongodb/mongodb": "Allow sending log messages to a MongoDB server (via library)", + "php-amqplib/php-amqplib": "Allow sending log messages to an AMQP server using php-amqplib", + "php-console/php-console": "Allow sending log messages to Google Chrome", + "rollbar/rollbar": "Allow sending log messages to Rollbar", + "ruflin/elastica": "Allow sending log messages to an Elastic Search server" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "2.x-dev" + } + }, + "autoload": { + "psr-4": { + "Monolog\\": "src/Monolog" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Jordi Boggiano", + "email": "j.boggiano@seld.be", + "homepage": "https://seld.be" + } + ], + "description": "Sends your logs to files, sockets, inboxes, databases and various web services", + "homepage": "https://github.com/Seldaek/monolog", + "keywords": [ + "log", + "logging", + "psr-3" + ], + "funding": [ + { + "url": "https://github.com/Seldaek", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/monolog/monolog", + "type": "tidelift" + } + ], + "time": "2020-12-14T13:15:25+00:00" + }, { "name": "nesbot/carbon", "version": "2.35.0", @@ -5121,6 +5379,10 @@ "datetime", "time" ], + "support": { + "issues": "https://github.com/briannesbitt/Carbon/issues", + "source": "https://github.com/briannesbitt/Carbon" + }, "funding": [ { "url": "https://opencollective.com/Carbon", @@ -5228,6 +5490,11 @@ "pseudorandom", "random" ], + "support": { + "email": "info@paragonie.com", + "issues": "https://github.com/paragonie/random_compat/issues", + "source": "https://github.com/paragonie/random_compat" + }, "time": "2018-07-02T15:55:56+00:00" }, { @@ -5294,6 +5561,10 @@ "archive", "tar" ], + "support": { + "issues": "http://pear.php.net/bugs/search.php?cmd=display&package_name[]=Archive_Tar", + "source": "https://github.com/pear/Archive_Tar" + }, "funding": [ { "url": "https://github.com/mrook", @@ -5351,6 +5622,10 @@ } ], "description": "More info available on: http://pear.php.net/package/Console_Getopt", + "support": { + "issues": "http://pear.php.net/bugs/search.php?cmd=display&package_name[]=Console_Getopt", + "source": "https://github.com/pear/Console_Getopt" + }, "time": "2019-11-20T18:27:48+00:00" }, { @@ -5395,6 +5670,10 @@ } ], "description": "Minimal set of PEAR core files to be used as composer dependency", + "support": { + "issues": "http://pear.php.net/bugs/search.php?cmd=display&package_name[]=PEAR", + "source": "https://github.com/pear/pear-core-minimal" + }, "time": "2019-11-19T19:00:24+00:00" }, { @@ -5450,6 +5729,10 @@ "keywords": [ "exception" ], + "support": { + "issues": "http://pear.php.net/bugs/search.php?cmd=display&package_name[]=PEAR_Exception", + "source": "https://github.com/pear/PEAR_Exception" + }, "time": "2019-12-10T10:24:42+00:00" }, { @@ -5538,6 +5821,10 @@ "container-interop", "psr" ], + "support": { + "issues": "https://github.com/php-fig/container/issues", + "source": "https://github.com/php-fig/container/tree/master" + }, "time": "2017-02-14T16:28:37+00:00" }, { @@ -5588,6 +5875,9 @@ "request", "response" ], + "support": { + "source": "https://github.com/php-fig/http-message/tree/master" + }, "time": "2016-08-06T14:39:51+00:00" }, { @@ -5635,6 +5925,9 @@ "psr", "psr-3" ], + "support": { + "source": "https://github.com/php-fig/log/tree/1.1.3" + }, "time": "2020-03-23T09:12:05+00:00" }, { @@ -5747,8 +6040,71 @@ } ], "description": "A polyfill for getallheaders.", + "support": { + "issues": "https://github.com/ralouphie/getallheaders/issues", + "source": "https://github.com/ralouphie/getallheaders/tree/develop" + }, "time": "2019-03-08T08:55:37+00:00" }, + { + "name": "rollbar/rollbar", + "version": "v2.1.0", + "source": { + "type": "git", + "url": "https://github.com/rollbar/rollbar-php.git", + "reference": "ff3db5739dd635740caed02ddad43e671b5a37e5" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/rollbar/rollbar-php/zipball/ff3db5739dd635740caed02ddad43e671b5a37e5", + "reference": "ff3db5739dd635740caed02ddad43e671b5a37e5", + "shasum": "" + }, + "require": { + "ext-curl": "*", + "monolog/monolog": "^1 || ^2", + "psr/log": "^1" + }, + "require-dev": { + "codeclimate/php-test-reporter": "dev-master", + "mockery/mockery": "1.*", + "packfire/php5.3-compat": "*", + "phpmd/phpmd": "@stable", + "phpunit/phpunit": "4.8.* || 5.7.* || ^8", + "squizlabs/php_codesniffer": "2.*" + }, + "suggest": { + "fluent/logger": "Needed to use the 'fluent' handler for fluentd support", + "packfire/php5.3-compat": "for backward compatibility with PHP 5.3" + }, + "type": "library", + "autoload": { + "psr-4": { + "Rollbar\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Rollbar, Inc.", + "email": "support@rollbar.com", + "role": "Developer" + } + ], + "description": "Monitors errors and exceptions and reports them to Rollbar", + "homepage": "http://github.com/rollbar/rollbar-php", + "keywords": [ + "debugging", + "errors", + "exceptions", + "logging", + "monitoring" + ], + "time": "2020-07-01T23:21:01+00:00" + }, { "name": "stack/builder", "version": "v1.0.5", @@ -5796,6 +6152,10 @@ "keywords": [ "stack" ], + "support": { + "issues": "https://github.com/stackphp/builder/issues", + "source": "https://github.com/stackphp/builder/tree/master" + }, "time": "2017-11-18T14:57:29+00:00" }, { @@ -5855,6 +6215,10 @@ "database", "routing" ], + "support": { + "issues": "https://github.com/symfony-cmf/routing/issues", + "source": "https://github.com/symfony-cmf/routing/tree/1.4" + }, "time": "2017-05-09T08:10:41+00:00" }, { @@ -5911,6 +6275,9 @@ ], "description": "Symfony ClassLoader Component", "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/class-loader/tree/3.4" + }, "funding": [ { "url": "https://symfony.com/sponsor", @@ -5984,6 +6351,9 @@ ], "description": "Symfony Config Component", "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/config/tree/v3.4.47" + }, "funding": [ { "url": "https://symfony.com/sponsor", @@ -6070,6 +6440,9 @@ ], "description": "Symfony Console Component", "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/console/tree/v3.4.41" + }, "funding": [ { "url": "https://symfony.com/sponsor", @@ -6140,6 +6513,9 @@ ], "description": "Symfony Debug Component", "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/debug/tree/3.4" + }, "funding": [ { "url": "https://symfony.com/sponsor", @@ -6225,6 +6601,9 @@ ], "description": "Symfony DependencyInjection Component", "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/dependency-injection/tree/3.4" + }, "funding": [ { "url": "https://symfony.com/sponsor", @@ -6302,6 +6681,9 @@ ], "description": "Symfony EventDispatcher Component", "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/event-dispatcher/tree/3.4" + }, "funding": [ { "url": "https://symfony.com/sponsor", @@ -6361,6 +6743,9 @@ ], "description": "Symfony Filesystem Component", "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/filesystem/tree/v3.4.47" + }, "funding": [ { "url": "https://symfony.com/sponsor", @@ -6419,6 +6804,9 @@ ], "description": "Symfony Finder Component", "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/finder/tree/v3.4.47" + }, "funding": [ { "url": "https://symfony.com/sponsor", @@ -6487,6 +6875,9 @@ ], "description": "Symfony HttpFoundation Component", "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/http-foundation/tree/3.4" + }, "funding": [ { "url": "https://symfony.com/sponsor", @@ -6591,6 +6982,9 @@ ], "description": "Symfony HttpKernel Component", "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/http-kernel/tree/v3.4.44" + }, "funding": [ { "url": "https://symfony.com/sponsor", @@ -6663,6 +7057,9 @@ "polyfill", "portable" ], + "support": { + "source": "https://github.com/symfony/polyfill-ctype/tree/v1.17.0" + }, "funding": [ { "url": "https://symfony.com/sponsor", @@ -6736,6 +7133,9 @@ "portable", "shim" ], + "support": { + "source": "https://github.com/symfony/polyfill-iconv/tree/v1.17.0" + }, "funding": [ { "url": "https://symfony.com/sponsor", @@ -6812,6 +7212,9 @@ "portable", "shim" ], + "support": { + "source": "https://github.com/symfony/polyfill-intl-idn/tree/master" + }, "funding": [ { "url": "https://symfony.com/sponsor", @@ -6885,6 +7288,9 @@ "portable", "shim" ], + "support": { + "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.17.0" + }, "funding": [ { "url": "https://symfony.com/sponsor", @@ -6955,6 +7361,9 @@ "portable", "shim" ], + "support": { + "source": "https://github.com/symfony/polyfill-php56/tree/v1.17.0" + }, "funding": [ { "url": "https://symfony.com/sponsor", @@ -7028,6 +7437,9 @@ "portable", "shim" ], + "support": { + "source": "https://github.com/symfony/polyfill-php70/tree/master" + }, "funding": [ { "url": "https://symfony.com/sponsor", @@ -7097,6 +7509,9 @@ "portable", "shim" ], + "support": { + "source": "https://github.com/symfony/polyfill-php72/tree/master" + }, "funding": [ { "url": "https://symfony.com/sponsor", @@ -7243,6 +7658,9 @@ "polyfill", "shim" ], + "support": { + "source": "https://github.com/symfony/polyfill-util/tree/master" + }, "funding": [ { "url": "https://symfony.com/sponsor", @@ -7306,6 +7724,9 @@ ], "description": "Symfony Process Component", "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/process/tree/v3.4.41" + }, "funding": [ { "url": "https://symfony.com/sponsor", @@ -7383,6 +7804,10 @@ "psr-17", "psr-7" ], + "support": { + "issues": "https://github.com/symfony/psr-http-message-bridge/issues", + "source": "https://github.com/symfony/psr-http-message-bridge/tree/v1.1.2" + }, "time": "2019-04-03T17:09:40+00:00" }, { @@ -7459,6 +7884,9 @@ "uri", "url" ], + "support": { + "source": "https://github.com/symfony/routing/tree/3.4" + }, "funding": [ { "url": "https://symfony.com/sponsor", @@ -7552,6 +7980,9 @@ ], "description": "Symfony Serializer Component", "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/serializer/tree/v3.4.41" + }, "funding": [ { "url": "https://symfony.com/sponsor", @@ -7636,6 +8067,9 @@ ], "description": "Symfony Translation Component", "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/translation/tree/3.4" + }, "funding": [ { "url": "https://symfony.com/sponsor", @@ -7736,6 +8170,9 @@ ], "description": "Symfony Validator Component", "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/validator/tree/3.4" + }, "funding": [ { "url": "https://symfony.com/sponsor", @@ -7895,6 +8332,9 @@ ], "description": "Symfony Yaml Component", "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/yaml/tree/v3.4.41" + }, "funding": [ { "url": "https://symfony.com/sponsor", @@ -7959,6 +8399,10 @@ "collection", "laravel" ], + "support": { + "issues": "https://github.com/tighten/collect/issues", + "source": "https://github.com/tighten/collect/tree/v8.17.0" + }, "time": "2020-12-04T18:20:44+00:00" }, { @@ -8023,6 +8467,10 @@ "keywords": [ "templating" ], + "support": { + "issues": "https://github.com/twigphp/Twig/issues", + "source": "https://github.com/twigphp/Twig/tree/1.x" + }, "time": "2020-02-11T05:59:23+00:00" }, { @@ -8073,6 +8521,10 @@ "security", "stream-wrapper" ], + "support": { + "issues": "https://github.com/TYPO3/phar-stream-wrapper/issues", + "source": "https://github.com/TYPO3/phar-stream-wrapper/tree/master" + }, "time": "2019-12-10T11:53:27+00:00" }, { @@ -8113,6 +8565,10 @@ } ], "description": "Helper class to locate a Drupal installation from a given path.", + "support": { + "issues": "https://github.com/webflo/drupal-finder/issues", + "source": "https://github.com/webflo/drupal-finder/tree/1.2.2" + }, "time": "2020-10-27T09:42:17+00:00" }, { @@ -8162,6 +8618,10 @@ "check", "validate" ], + "support": { + "issues": "https://github.com/webmozart/assert/issues", + "source": "https://github.com/webmozart/assert/tree/master" + }, "time": "2020-07-08T17:02:28+00:00" }, { @@ -8208,6 +8668,10 @@ } ], "description": "A robust cross-platform utility for normalizing, comparing and modifying file paths.", + "support": { + "issues": "https://github.com/webmozart/path-util/issues", + "source": "https://github.com/webmozart/path-util/tree/2.3.0" + }, "time": "2015-12-17T08:42:14+00:00" } ], @@ -8271,6 +8735,10 @@ "testing", "web" ], + "support": { + "issues": "https://github.com/minkphp/Mink/issues", + "source": "https://github.com/minkphp/Mink/tree/v1.8.1" + }, "time": "2020-03-11T15:45:53+00:00" }, { @@ -8328,6 +8796,10 @@ "browser", "testing" ], + "support": { + "issues": "https://github.com/minkphp/MinkBrowserKitDriver/issues", + "source": "https://github.com/minkphp/MinkBrowserKitDriver/tree/v1.3.4" + }, "time": "2020-03-11T09:49:45+00:00" }, { @@ -8383,6 +8855,10 @@ "headless", "testing" ], + "support": { + "issues": "https://github.com/minkphp/MinkGoutteDriver/issues", + "source": "https://github.com/minkphp/MinkGoutteDriver/tree/master" + }, "time": "2016-03-05T09:04:22+00:00" }, { @@ -8444,6 +8920,10 @@ "testing", "webdriver" ], + "support": { + "issues": "https://github.com/minkphp/MinkSelenium2Driver/issues", + "source": "https://github.com/minkphp/MinkSelenium2Driver/tree/v1.4.0" + }, "time": "2020-03-11T14:43:21+00:00" }, { @@ -8501,6 +8981,11 @@ "ssl", "tls" ], + "support": { + "irc": "irc://irc.freenode.org/composer", + "issues": "https://github.com/composer/ca-bundle/issues", + "source": "https://github.com/composer/ca-bundle/tree/1.2.9" + }, "funding": [ { "url": "https://packagist.com", @@ -8595,6 +9080,11 @@ "dependency", "package" ], + "support": { + "irc": "irc://irc.freenode.org/composer", + "issues": "https://github.com/composer/composer/issues", + "source": "https://github.com/composer/composer/tree/1.10.19" + }, "funding": [ { "url": "https://packagist.com", @@ -8669,6 +9159,11 @@ "spdx", "validator" ], + "support": { + "irc": "irc://irc.freenode.org/composer", + "issues": "https://github.com/composer/spdx-licenses/issues", + "source": "https://github.com/composer/spdx-licenses/tree/1.5.5" + }, "funding": [ { "url": "https://packagist.com", @@ -8727,6 +9222,11 @@ "Xdebug", "performance" ], + "support": { + "irc": "irc://irc.freenode.org/composer", + "issues": "https://github.com/composer/xdebug-handler/issues", + "source": "https://github.com/composer/xdebug-handler/tree/1.4.5" + }, "funding": [ { "url": "https://packagist.com", @@ -8807,6 +9307,10 @@ "stylecheck", "tests" ], + "support": { + "issues": "https://github.com/dealerdirect/phpcodesniffer-composer-installer/issues", + "source": "https://github.com/dealerdirect/phpcodesniffer-composer-installer" + }, "time": "2020-12-07T18:04:37+00:00" }, { @@ -8858,6 +9362,10 @@ "constructor", "instantiate" ], + "support": { + "issues": "https://github.com/doctrine/instantiator/issues", + "source": "https://github.com/doctrine/instantiator/tree/1.4.0" + }, "funding": [ { "url": "https://www.doctrine-project.org/sponsorship.html", @@ -8910,6 +9418,10 @@ "phpcs", "standards" ], + "support": { + "issues": "https://www.drupal.org/project/issues/coder", + "source": "https://www.drupal.org/project/coder" + }, "time": "2020-05-08T10:20:59+00:00" }, { @@ -8956,6 +9468,9 @@ "GPL-2.0-or-later" ], "description": "require-dev dependencies from drupal/drupal; use in addition to drupal/core-recommended to run tests from drupal/core.", + "support": { + "source": "https://github.com/drupal/core-dev/tree/8.9.5" + }, "time": "2020-05-09T07:53:22+00:00" }, { @@ -9011,6 +9526,10 @@ "keywords": [ "scraper" ], + "support": { + "issues": "https://github.com/FriendsOfPHP/Goutte/issues", + "source": "https://github.com/FriendsOfPHP/Goutte/tree/master" + }, "time": "2018-06-29T15:13:57+00:00" }, { @@ -9070,6 +9589,10 @@ "webdriver", "webtest" ], + "support": { + "issues": "https://github.com/instaclick/php-webdriver/issues", + "source": "https://github.com/instaclick/php-webdriver/tree/1.x" + }, "time": "2019-09-25T09:05:11+00:00" }, { @@ -9127,6 +9650,10 @@ "headless", "phantomjs" ], + "support": { + "issues": "https://github.com/jcalderonzumba/gastonjs/issues", + "source": "https://github.com/jcalderonzumba/gastonjs/tree/master" + }, "time": "2017-03-31T07:31:47+00:00" }, { @@ -9185,6 +9712,10 @@ "phantomjs", "testing" ], + "support": { + "issues": "https://github.com/jcalderonzumba/MinkPhantomJSDriver/issues", + "source": "https://github.com/jcalderonzumba/MinkPhantomJSDriver/tree/master" + }, "time": "2016-12-01T10:57:30+00:00" }, { @@ -9251,6 +9782,10 @@ "json", "schema" ], + "support": { + "issues": "https://github.com/justinrainbow/json-schema/issues", + "source": "https://github.com/justinrainbow/json-schema/tree/5.2.10" + }, "time": "2020-05-27T16:41:55+00:00" }, { @@ -9393,6 +9928,11 @@ ], "description": "Virtual file system to mock the real file system in unit tests.", "homepage": "http://vfs.bovigo.org/", + "support": { + "issues": "https://github.com/bovigo/vfsStream/issues", + "source": "https://github.com/bovigo/vfsStream/tree/master", + "wiki": "https://github.com/bovigo/vfsStream/wiki" + }, "time": "2019-10-30T15:31:00+00:00" }, { @@ -9441,6 +9981,10 @@ "object", "object graph" ], + "support": { + "issues": "https://github.com/myclabs/DeepCopy/issues", + "source": "https://github.com/myclabs/DeepCopy/tree/1.10.2" + }, "funding": [ { "url": "https://tidelift.com/funding/github/packagist/myclabs/deep-copy", @@ -9510,6 +10054,10 @@ "iterator", "nette" ], + "support": { + "issues": "https://github.com/nette/finder/issues", + "source": "https://github.com/nette/finder/tree/v2.5.2" + }, "time": "2020-01-03T20:35:40+00:00" }, { @@ -9646,6 +10194,10 @@ } ], "description": "Component for reading phar.io manifest information from a PHP Archive (PHAR)", + "support": { + "issues": "https://github.com/phar-io/manifest/issues", + "source": "https://github.com/phar-io/manifest/tree/master" + }, "time": "2018-07-08T19:23:20+00:00" }, { @@ -9693,6 +10245,10 @@ } ], "description": "Library for handling version information and constraints", + "support": { + "issues": "https://github.com/phar-io/version/issues", + "source": "https://github.com/phar-io/version/tree/master" + }, "time": "2018-07-08T19:19:57+00:00" }, { @@ -9742,6 +10298,10 @@ "reflection", "static analysis" ], + "support": { + "issues": "https://github.com/phpDocumentor/ReflectionCommon/issues", + "source": "https://github.com/phpDocumentor/ReflectionCommon/tree/2.x" + }, "time": "2020-06-27T09:03:43+00:00" }, { @@ -9794,6 +10354,10 @@ } ], "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.", + "support": { + "issues": "https://github.com/phpDocumentor/ReflectionDocBlock/issues", + "source": "https://github.com/phpDocumentor/ReflectionDocBlock/tree/master" + }, "time": "2020-09-03T19:13:55+00:00" }, { @@ -9839,6 +10403,10 @@ } ], "description": "A PSR-5 based resolver of Class names, Types and Structural Element Names", + "support": { + "issues": "https://github.com/phpDocumentor/TypeResolver/issues", + "source": "https://github.com/phpDocumentor/TypeResolver/tree/1.4.0" + }, "time": "2020-09-17T18:55:26+00:00" }, { @@ -9902,6 +10470,10 @@ "spy", "stub" ], + "support": { + "issues": "https://github.com/phpspec/prophecy/issues", + "source": "https://github.com/phpspec/prophecy/tree/1.12.2" + }, "time": "2020-12-19T10:15:11+00:00" }, { @@ -9944,6 +10516,10 @@ "MIT" ], "description": "PHPStan - PHP Static Analysis Tool", + "support": { + "issues": "https://github.com/phpstan/phpstan/issues", + "source": "https://github.com/phpstan/phpstan/tree/0.12.28" + }, "funding": [ { "url": "https://github.com/ondrejmirtes", @@ -10072,6 +10648,10 @@ "testing", "xunit" ], + "support": { + "issues": "https://github.com/sebastianbergmann/php-code-coverage/issues", + "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/master" + }, "time": "2018-10-31T16:06:48+00:00" }, { @@ -10122,6 +10702,10 @@ "filesystem", "iterator" ], + "support": { + "issues": "https://github.com/sebastianbergmann/php-file-iterator/issues", + "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/2.0.3" + }, "funding": [ { "url": "https://github.com/sebastianbergmann", @@ -10169,6 +10753,10 @@ "keywords": [ "template" ], + "support": { + "issues": "https://github.com/sebastianbergmann/php-text-template/issues", + "source": "https://github.com/sebastianbergmann/php-text-template/tree/1.2.1" + }, "time": "2015-06-21T13:50:34+00:00" }, { @@ -10218,6 +10806,10 @@ "keywords": [ "timer" ], + "support": { + "issues": "https://github.com/sebastianbergmann/php-timer/issues", + "source": "https://github.com/sebastianbergmann/php-timer/tree/2.1.3" + }, "funding": [ { "url": "https://github.com/sebastianbergmann", @@ -10273,6 +10865,10 @@ "keywords": [ "tokenizer" ], + "support": { + "issues": "https://github.com/sebastianbergmann/php-token-stream/issues", + "source": "https://github.com/sebastianbergmann/php-token-stream/tree/3.1.2" + }, "funding": [ { "url": "https://github.com/sebastianbergmann", @@ -10364,6 +10960,10 @@ "testing", "xunit" ], + "support": { + "issues": "https://github.com/sebastianbergmann/phpunit/issues", + "source": "https://github.com/sebastianbergmann/phpunit/tree/7.5.20" + }, "time": "2020-01-08T08:45:45+00:00" }, { @@ -10409,6 +11009,10 @@ ], "description": "Looks up which function or method a line of code belongs to", "homepage": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/", + "support": { + "issues": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/issues", + "source": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/tree/1.0.2" + }, "funding": [ { "url": "https://github.com/sebastianbergmann", @@ -10479,6 +11083,10 @@ "compare", "equality" ], + "support": { + "issues": "https://github.com/sebastianbergmann/comparator/issues", + "source": "https://github.com/sebastianbergmann/comparator/tree/3.0.3" + }, "funding": [ { "url": "https://github.com/sebastianbergmann", @@ -10541,6 +11149,10 @@ "unidiff", "unified diff" ], + "support": { + "issues": "https://github.com/sebastianbergmann/diff/issues", + "source": "https://github.com/sebastianbergmann/diff/tree/3.0.3" + }, "funding": [ { "url": "https://github.com/sebastianbergmann", @@ -10600,6 +11212,10 @@ "environment", "hhvm" ], + "support": { + "issues": "https://github.com/sebastianbergmann/environment/issues", + "source": "https://github.com/sebastianbergmann/environment/tree/4.2.4" + }, "funding": [ { "url": "https://github.com/sebastianbergmann", @@ -10673,6 +11289,10 @@ "export", "exporter" ], + "support": { + "issues": "https://github.com/sebastianbergmann/exporter/issues", + "source": "https://github.com/sebastianbergmann/exporter/tree/3.1.3" + }, "funding": [ { "url": "https://github.com/sebastianbergmann", @@ -10730,6 +11350,10 @@ "keywords": [ "global state" ], + "support": { + "issues": "https://github.com/sebastianbergmann/global-state/issues", + "source": "https://github.com/sebastianbergmann/global-state/tree/2.0.0" + }, "time": "2017-04-27T15:39:26+00:00" }, { @@ -10777,6 +11401,10 @@ ], "description": "Traverses array structures and object graphs to enumerate all referenced objects", "homepage": "https://github.com/sebastianbergmann/object-enumerator/", + "support": { + "issues": "https://github.com/sebastianbergmann/object-enumerator/issues", + "source": "https://github.com/sebastianbergmann/object-enumerator/tree/3.0.4" + }, "funding": [ { "url": "https://github.com/sebastianbergmann", @@ -10828,6 +11456,10 @@ ], "description": "Allows reflection of object attributes, including inherited and non-public ones", "homepage": "https://github.com/sebastianbergmann/object-reflector/", + "support": { + "issues": "https://github.com/sebastianbergmann/object-reflector/issues", + "source": "https://github.com/sebastianbergmann/object-reflector/tree/1.1.2" + }, "funding": [ { "url": "https://github.com/sebastianbergmann", @@ -10887,6 +11519,10 @@ ], "description": "Provides functionality to recursively process PHP variables", "homepage": "http://www.github.com/sebastianbergmann/recursion-context", + "support": { + "issues": "https://github.com/sebastianbergmann/recursion-context/issues", + "source": "https://github.com/sebastianbergmann/recursion-context/tree/3.0.1" + }, "funding": [ { "url": "https://github.com/sebastianbergmann", @@ -10935,6 +11571,10 @@ ], "description": "Provides a list of PHP built-in functions that operate on resources", "homepage": "https://www.github.com/sebastianbergmann/resource-operations", + "support": { + "issues": "https://github.com/sebastianbergmann/resource-operations/issues", + "source": "https://github.com/sebastianbergmann/resource-operations/tree/2.0.2" + }, "funding": [ { "url": "https://github.com/sebastianbergmann", @@ -10984,6 +11624,10 @@ ], "description": "Library that helps with managing the version number of Git-hosted PHP projects", "homepage": "https://github.com/sebastianbergmann/version", + "support": { + "issues": "https://github.com/sebastianbergmann/version/issues", + "source": "https://github.com/sebastianbergmann/version/tree/master" + }, "time": "2016-10-03T07:35:21+00:00" }, { @@ -11033,6 +11677,10 @@ "parser", "validator" ], + "support": { + "issues": "https://github.com/Seldaek/jsonlint/issues", + "source": "https://github.com/Seldaek/jsonlint/tree/1.8.3" + }, "funding": [ { "url": "https://github.com/Seldaek", @@ -11087,6 +11735,10 @@ "keywords": [ "phar" ], + "support": { + "issues": "https://github.com/Seldaek/phar-utils/issues", + "source": "https://github.com/Seldaek/phar-utils/tree/master" + }, "time": "2020-07-07T18:42:57+00:00" }, { @@ -11138,6 +11790,11 @@ "phpcs", "standards" ], + "support": { + "issues": "https://github.com/squizlabs/PHP_CodeSniffer/issues", + "source": "https://github.com/squizlabs/PHP_CodeSniffer", + "wiki": "https://github.com/squizlabs/PHP_CodeSniffer/wiki" + }, "time": "2020-04-17T01:09:41+00:00" }, { @@ -11190,6 +11847,9 @@ ], "description": "Symfony BrowserKit Component", "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/browser-kit/tree/v3.4.47" + }, "funding": [ { "url": "https://symfony.com/sponsor", @@ -11252,6 +11912,9 @@ ], "description": "Symfony CssSelector Component", "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/css-selector/tree/v3.4.47" + }, "funding": [ { "url": "https://symfony.com/sponsor", @@ -11318,6 +11981,9 @@ ], "description": "Symfony DomCrawler Component", "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/dom-crawler/tree/v3.4.47" + }, "funding": [ { "url": "https://symfony.com/sponsor", @@ -11389,6 +12055,9 @@ "redlock", "semaphore" ], + "support": { + "source": "https://github.com/symfony/lock/tree/v3.4.47" + }, "funding": [ { "url": "https://symfony.com/sponsor", @@ -11465,6 +12134,9 @@ ], "description": "Symfony PHPUnit Bridge", "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/phpunit-bridge/tree/v3.4.47" + }, "funding": [ { "url": "https://symfony.com/sponsor", @@ -11519,6 +12191,10 @@ } ], "description": "A small library for converting tokenized PHP source code into XML and potentially other formats", + "support": { + "issues": "https://github.com/theseer/tokenizer/issues", + "source": "https://github.com/theseer/tokenizer/tree/master" + }, "funding": [ { "url": "https://github.com/theseer", diff --git a/web/modules/contrib/rollbar/README.md b/web/modules/contrib/rollbar/README.md new file mode 100644 index 0000000..6dcecbc --- /dev/null +++ b/web/modules/contrib/rollbar/README.md @@ -0,0 +1,4 @@ +Rollbar +======= + +This module provides Drupal 8 support for [rollbar](https://rollbar.com). diff --git a/web/modules/contrib/rollbar/composer.json b/web/modules/contrib/rollbar/composer.json new file mode 100644 index 0000000..ad03cd0 --- /dev/null +++ b/web/modules/contrib/rollbar/composer.json @@ -0,0 +1,11 @@ +{ + "name": "drupal/rollbar", + "description": "Rollbar integration for Drupal 8.", + "type": "drupal-module", + "license": "GPL 2.0+", + "minimum-stability": "dev", + "prefer-stable": true, + "require": { + "rollbar/rollbar": "^1.0" + } +} diff --git a/web/modules/contrib/rollbar/config/install/rollbar.settings.yml b/web/modules/contrib/rollbar/config/install/rollbar.settings.yml new file mode 100644 index 0000000..25851e9 --- /dev/null +++ b/web/modules/contrib/rollbar/config/install/rollbar.settings.yml @@ -0,0 +1,10 @@ +enabled: false +access_token: null +capture_uncaught: true +capture_unhandled_rejections: false +environment: production +log_level: [] +channels: '' +rollbar_js_url: https://cdnjs.cloudflare.com/ajax/libs/rollbar.js/1.9.3/rollbar.min.js +host_white_list: '' + diff --git a/web/modules/contrib/rollbar/config/schema/rollbar.schema.yml b/web/modules/contrib/rollbar/config/schema/rollbar.schema.yml new file mode 100644 index 0000000..113276b --- /dev/null +++ b/web/modules/contrib/rollbar/config/schema/rollbar.schema.yml @@ -0,0 +1,31 @@ +rollbar.settings: + type: config_object + label: 'Rollbar settings' + mapping: + enabled: + type: boolean + label: 'Whether Rollbar is enabled' + access_token: + type: string + label: 'The rollbar API access token' + capture_uncaught: + type: boolean + label: 'The rollbar captureUncaught option' + capture_unhandled_rejections: + type: boolean + label: 'The rollbar captureUnhandledRejections option' + environment: + type: string + label: 'Environment that will be reported to rollbar' + log_level: + type: sequence + label: 'Log levels that will be reported to rollbar' + channels: + type: string + label: 'Channels to filter' + rollbar_js_url: + type: string + label: 'URL to the rollbar library' + host_white_list: + type: string + label: 'Comma-separated host white list' diff --git a/web/modules/contrib/rollbar/js/rollbar.js b/web/modules/contrib/rollbar/js/rollbar.js new file mode 100644 index 0000000..a12dab0 --- /dev/null +++ b/web/modules/contrib/rollbar/js/rollbar.js @@ -0,0 +1,12 @@ +var _rollbarConfig = { + accessToken: drupalSettings.rollbar.access_token, + captureUncaught: drupalSettings.rollbar.capture_uncaught, + captureUnhandledRejections: drupalSettings.rollbar.capture_unhandled_rejections, + rollbarJsUrl: drupalSettings.rollbar.rollbar_js_url, + payload: { + environment: drupalSettings.rollbar.environment + } +}; +// Rollbar Snippet +!function(r){function e(n){if(o[n])return o[n].exports;var t=o[n]={exports:{},id:n,loaded:!1};return r[n].call(t.exports,t,t.exports,e),t.loaded=!0,t.exports}var o={};return e.m=r,e.c=o,e.p="",e(0)}([function(r,e,o){"use strict";var n=o(1).Rollbar,t=o(2);_rollbarConfig.rollbarJsUrl=_rollbarConfig.rollbarJsUrl||"https://cdnjs.cloudflare.com/ajax/libs/rollbar.js/1.9.3/rollbar.min.js";var a=n.init(window,_rollbarConfig),i=t(a,_rollbarConfig);a.loadFull(window,document,!_rollbarConfig.async,_rollbarConfig,i)},function(r,e){"use strict";function o(r){return function(){try{return r.apply(this,arguments)}catch(r){try{console.error("[Rollbar]: Internal error",r)}catch(r){}}}}function n(r,e,o){window._rollbarWrappedError&&(o[4]||(o[4]=window._rollbarWrappedError),o[5]||(o[5]=window._rollbarWrappedError._rollbarContext),window._rollbarWrappedError=null),r.uncaughtError.apply(r,o),e&&e.apply(window,o)}function t(r){var e=function(){var e=Array.prototype.slice.call(arguments,0);n(r,r._rollbarOldOnError,e)};return e.belongsToShim=!0,e}function a(r){this.shimId=++c,this.notifier=null,this.parentShim=r,this._rollbarOldOnError=null}function i(r){var e=a;return o(function(){if(this.notifier)return this.notifier[r].apply(this.notifier,arguments);var o=this,n="scope"===r;n&&(o=new e(this));var t=Array.prototype.slice.call(arguments,0),a={shim:o,method:r,args:t,ts:new Date};return window._rollbarShimQueue.push(a),n?o:void 0})}function l(r,e){if(e.hasOwnProperty&&e.hasOwnProperty("addEventListener")){var o=e.addEventListener;e.addEventListener=function(e,n,t){o.call(this,e,r.wrap(n),t)};var n=e.removeEventListener;e.removeEventListener=function(r,e,o){n.call(this,r,e&&e._wrapped?e._wrapped:e,o)}}}var c=0;a.init=function(r,e){var n=e.globalAlias||"Rollbar";if("object"==typeof r[n])return r[n];r._rollbarShimQueue=[],r._rollbarWrappedError=null,e=e||{};var i=new a;return o(function(){if(i.configure(e),e.captureUncaught){i._rollbarOldOnError=r.onerror,r.onerror=t(i);var o,a,c="EventTarget,Window,Node,ApplicationCache,AudioTrackList,ChannelMergerNode,CryptoOperation,EventSource,FileReader,HTMLUnknownElement,IDBDatabase,IDBRequest,IDBTransaction,KeyOperation,MediaController,MessagePort,ModalWindow,Notification,SVGElementInstance,Screen,TextTrack,TextTrackCue,TextTrackList,WebSocket,WebSocketWorker,Worker,XMLHttpRequest,XMLHttpRequestEventTarget,XMLHttpRequestUpload".split(",");for(o=0;ogetEditable('rollbar.settings'); + $config->set('host_white_list', ''); + $config->save(TRUE); +} diff --git a/web/modules/contrib/rollbar/rollbar.libraries.yml b/web/modules/contrib/rollbar/rollbar.libraries.yml new file mode 100644 index 0000000..8590d8e --- /dev/null +++ b/web/modules/contrib/rollbar/rollbar.libraries.yml @@ -0,0 +1,7 @@ +global: + version: VERSION + header: true + js: + js/rollbar.js: {} + dependencies: + - core/drupalSettings diff --git a/web/modules/contrib/rollbar/rollbar.links.menu.yml b/web/modules/contrib/rollbar/rollbar.links.menu.yml new file mode 100644 index 0000000..6f524a3 --- /dev/null +++ b/web/modules/contrib/rollbar/rollbar.links.menu.yml @@ -0,0 +1,5 @@ +rollbar.settings: + title: 'Rollbar' + parent: system.admin_config_services + description: 'Configure the Rollbar integration.' + route_name: rollbar.settings diff --git a/web/modules/contrib/rollbar/rollbar.module b/web/modules/contrib/rollbar/rollbar.module new file mode 100644 index 0000000..8c93a24 --- /dev/null +++ b/web/modules/contrib/rollbar/rollbar.module @@ -0,0 +1,43 @@ +get('enabled')) { + $settings = [ + 'access_token' => $config->get('access_token'), + 'capture_uncaught' => $config->get('capture_uncaught'), + 'capture_unhandled_rejections' => $config->get('capture_unhandled_rejections'), + 'environment' => $config->get('environment'), + 'rollbar_js_url' => $config->get('rollbar_js_url'), + ]; + + // Extract host white list, if set, and add it to configuration. + if ($hosts = $config->get('host_white_list')) { + $host_list = explode(',', trim($hosts)); + + if (!empty($host_list)) { + $settings['host_white_list'] = $host_list; + } + } + + // Allow alteration of the rollbar settings by other modules. + \Drupal::moduleHandler()->alter('rollbar_settings', $settings); + + $attachments['#attached']['library'][] = 'rollbar/global'; + $attachments['#attached']['drupalSettings']['rollbar'] = $settings; + } +} diff --git a/web/modules/contrib/rollbar/rollbar.permissions.yml b/web/modules/contrib/rollbar/rollbar.permissions.yml new file mode 100644 index 0000000..6f1b5e0 --- /dev/null +++ b/web/modules/contrib/rollbar/rollbar.permissions.yml @@ -0,0 +1,2 @@ +administer rollbar: + title: "Administer Rollbar" diff --git a/web/modules/contrib/rollbar/rollbar.routing.yml b/web/modules/contrib/rollbar/rollbar.routing.yml new file mode 100644 index 0000000..c298a19 --- /dev/null +++ b/web/modules/contrib/rollbar/rollbar.routing.yml @@ -0,0 +1,9 @@ +rollbar.settings: + path: '/admin/config/services/rollbar' + defaults: + _form: '\Drupal\rollbar\Form\RollbarSettingsForm' + _title: 'Rollbar' + requirements: + _permission: 'administer rollbar' + options: + _admin_route: true diff --git a/web/modules/contrib/rollbar/rollbar.services.yml b/web/modules/contrib/rollbar/rollbar.services.yml new file mode 100644 index 0000000..395fc76 --- /dev/null +++ b/web/modules/contrib/rollbar/rollbar.services.yml @@ -0,0 +1,6 @@ +services: + logger.rollbar: + class: Drupal\rollbar\Logger\RollbarLogger + arguments: ['@config.factory', '@logger.log_message_parser'] + tags: + - { name: logger } diff --git a/web/modules/contrib/rollbar/src/Form/RollbarSettingsForm.php b/web/modules/contrib/rollbar/src/Form/RollbarSettingsForm.php new file mode 100644 index 0000000..e2949c9 --- /dev/null +++ b/web/modules/contrib/rollbar/src/Form/RollbarSettingsForm.php @@ -0,0 +1,125 @@ +config('rollbar.settings'); + + $form['enabled'] = [ + '#type' => 'checkbox', + '#title' => $this->t('Enabled'), + '#default_value' => $config->get('enabled'), + ]; + + $form['access_token'] = [ + '#type' => 'textfield', + '#title' => $this->t('Access Token'), + '#default_value' => $config->get('access_token'), + '#required' => TRUE, + ]; + + $form['capture_uncaught'] = [ + '#type' => 'checkbox', + '#title' => $this->t('Capture Uncaught'), + '#default_value' => $config->get('capture_uncaught'), + ]; + + $form['capture_unhandled_rejections'] = [ + '#type' => 'checkbox', + '#title' => $this->t('Capture uncaught rejections'), + '#default_value' => $config->get('capture_unhandled_rejections'), + ]; + + $form['environment'] = [ + '#type' => 'textfield', + '#title' => $this->t('Environment'), + '#default_value' => $config->get('environment'), + '#description' => $this->t('The environment string to use when reporting errors'), + ]; + + $form['log_level'] = [ + '#type' => 'checkboxes', + '#title' => $this->t('Log level'), + '#default_value' => $config->get('log_level'), + '#description' => $this->t('Selected log types will be send to Rollbar'), + '#options' => [ + 'Emergency', + 'Alert', + 'Critical', + 'Error', + 'Warning', + 'Notice', + 'Info' , + 'Debug', + ] + ]; + + $form['channels'] = [ + '#type' => 'textfield', + '#title' => $this->t('Filter channels'), + '#default_value' => $config->get('channels'), + '#description' => $this->t("Enter channels separated by ';' to prevent send them to rollbar"), + ]; + + $form['rollbar_js_url'] = [ + '#type' => 'textfield', + '#title' => $this->t('Rollbar JS URL'), + '#default_value' => $config->get('rollbar_js_url'), + '#description' => $this->t('The URL to the Rollbar js library'), + ]; + + $form['host_white_list'] = [ + '#type' => 'textfield', + '#title' => $this->t('Host white list'), + '#default_value' => $config->get('host_white_list'), + '#description' => $this->t('List of hosts for which rollbar reports errors'), + ]; + + return parent::buildForm($form, $form_state); + } + + /** + * {@inheritdoc} + */ + public function submitForm(array &$form, FormStateInterface $form_state) { + $this->config('rollbar.settings') + ->set('access_token', $form_state->getValue('access_token')) + ->set('enabled', $form_state->getValue('enabled')) + ->set('capture_uncaught', $form_state->getValue('capture_uncaught')) + ->set('capture_unhandled_rejections', $form_state->getValue('capture_unhandled_rejections')) + ->set('environment', $form_state->getValue('environment')) + ->set('log_level', $form_state->getValue('log_level')) + ->set('channels', $form_state->getValue('channels')) + ->set('rollbar_js_url', $form_state->getValue('rollbar_js_url')) + ->set('host_white_list', $form_state->getValue('host_white_list')) + ->save(); + + parent::submitForm($form, $form_state); + } + +} diff --git a/web/modules/contrib/rollbar/src/Logger/RollbarLogger.php b/web/modules/contrib/rollbar/src/Logger/RollbarLogger.php new file mode 100644 index 0000000..5272487 --- /dev/null +++ b/web/modules/contrib/rollbar/src/Logger/RollbarLogger.php @@ -0,0 +1,103 @@ +config = $config_factory->get('rollbar.settings'); + $this->parser = $parser; + } + + /** + * Initialize rollbar object. + */ + protected function init() { + $token = $this->config->get('access_token'); + $environment = $this->config->get('environment'); + + if (empty($token) || empty($environment)) { + return FALSE; + } + + if (!$this->isInitialized) { + Rollbar::init(['access_token' => $token, 'environment' => $environment]); + $this->isInitialized = TRUE; + } + + return TRUE; + } + /** + * {@inheritdoc} + */ + public function log($level, $message, array $context = []) { + if (!$this->init()) { + return; + } + $enabled_log_levels = $this->config->get('log_level'); + $log_level_condition = !in_array($level, $enabled_log_levels); + $omit_channel = array_map('trim', explode(";", $this->config->get('channels'))); + $omit_channel_condition = isset($context['channel']) && in_array($context['channel'], $omit_channel); + if ($log_level_condition || $omit_channel_condition) { + return; + } + $level_map = [ + RfcLogLevel::EMERGENCY => RollbarLogLevel::critical(), + RfcLogLevel::ALERT => RollbarLogLevel::critical(), + RfcLogLevel::CRITICAL => RollbarLogLevel::critical(), + RfcLogLevel::ERROR => RollbarLogLevel::error(), + RfcLogLevel::WARNING => RollbarLogLevel::warning(), + RfcLogLevel::NOTICE => RollbarLogLevel::info(), + RfcLogLevel::INFO => RollbarLogLevel::info(), + RfcLogLevel::DEBUG => RollbarLogLevel::debug(), + ]; + + // Populate the message placeholders and then replace them in the message. + $message_placeholders = $this->parser->parseMessagePlaceholders($message, $context); + $message = empty($message_placeholders) ? $message : strtr($message, $message_placeholders); + Rollbar::log($level_map[$level], $message, $context); + } + +} +