This tool is used to build and maintain browscap files.

Overview

Browser Capabilities Project

Build Status codecov

This tool is used to build and maintain browscap files.

Installation

$ git clone git://github.com/browscap/browscap.git
$ cd browscap
$ curl -s https://getcomposer.org/installer | php
$ php composer.phar install

What's changed in version 6028

BC breaks listed

  • Interface changed for class \Browscap\Data\Factory\UserAgentFactory

What's changed in version 6027

BC breaks listed

  • Strict type hints have been added throughout. This may break some type assumptions made in earlier versions.
  • In many classes Setters and Getters have been removed, the parameters have been moved to the class constructor
  • Some classes are now final - use composition instead of inheritance

What's changed in version 6025

BC breaks listed

  • The grep command and the diff command were removed

Changes

  • The tests for integration testing the source files are split from the other tests
  • Tests on travis use the build pipeline now

Directory Structure

  • bin - Contains executable files
  • build - Contains various builds
  • resources - Files needed to build the various files, also used to validate the capabilities
  • src - The code of this project lives here
  • tests - The testing code of this project lives here

the CLI commands

There is actually only one cli command available.

build

This command is used to build a set of defined browscap files.

bin/browscap build [version]

options

  • version (required) the name of the version that should be built
  • output (optional) the directory where the files should be created
  • resources (optional) the directory where the sources for the build are located
  • coverage (optional) if this option is set, during the build information is added which can be used to generate a coverage report
  • no-zip (optional) if this option is set, no zip file is generated during the build

For further documentation on the build command, see here.

CLI Examples

You can export a new set of browscap files:

$ bin/browscap build 5020-test
Resource folder: 
Build folder: 
Generating full_asp_browscap.ini [ASP/FULL]
Generating full_php_browscap.ini [PHP/FULL]
Generating browscap.ini [ASP]
Generating php_browscap.ini [PHP]
...
All done.
$

Now you if you look at browscap/browscap.ini you will see a new INI file has been generated.

Usage Examples

How to build a standard set of browscap files

This example assumes that you want to build all *php_browscap.ini files.

$logger = new \Monolog\Logger('browscap'); // or maybe any other PSR-3 compatible Logger

$format = \Browscap\Formatter\FormatterInterface::TYPE_PHP; // you may choose the output format you want, the format must be already supported

$resourceFolder = 'resources/'; // please point to the resources directory inside the project
$buildFolder = ''; // choose the directory where the generated file should be written to

// If you are using one of the predefined WriterFactories, you may not choose the file names
$writerCollection = (new \Browscap\Writer\Factory\PhpWriterFactory())->createCollection($logger, $buildFolder);

$dataCollectionFactory = new \Browscap\Data\Factory\DataCollectionFactory($logger);

$buildGenerator = new BuildGenerator(
    $resourceFolder,
    $buildFolder,
    $logger,
    $writerCollection,
    $dataCollectionFactory
);

$version       = '';    // what you want to be written into the generated file
$createZipFile = false; // It is not possible yet to create a zipped version of a custom named browscap file

$buildGenerator->run($version, $createZipFile);

How to build a custom set of browscap files

If you want to build a custom set of browscap files, you may not use the predefined WriterFactories.

$logger = new \Monolog\Logger('browscap'); // or maybe any other PSR-3 compatible Logger

$format = \Browscap\Formatter\FormatterInterface::TYPE_PHP; // you may choose the output format you want, the format must be already supported

$resourceFolder = 'resources/'; // please point to the resources directory inside the project
$buildFolder = ''; // choose the directory where the generated file should be written to

$propertyHolder = new \Browscap\Data\PropertyHolder();

// build a standard version browscap.json file
$jsonFormatter = new \Browscap\Formatter\JsonFormatter($propertyHolder);
$jsonFilter    = new \Browscap\Filter\StandardFilter($propertyHolder);

$jsonWriter = new \Browscap\Writer\JsonWriter('relative path or name of the target file', $logger);
$jsonWriter->setFormatter($jsonFormatter);
$jsonWriter->setFilter($jsonFilter);

// build a lite version browscap.xml file
$xmlFormatter = new \Browscap\Formatter\XmlFormatter($propertyHolder);
$xmlFilter    = new \Browscap\Filter\LiteFilter($propertyHolder);

$xmlWriter = new \Browscap\Writer\XmlWriter('relative path or name of the target file', $logger);
$xmlWriter->setFormatter($xmlFormatter);
$xmlWriter->setFilter($xmlFilter);

$writerCollection = new \Browscap\Writer\WriterCollection();
$writerCollection->addWriter($jsonWriter);
$writerCollection->addWriter($xmlWriter);

$dataCollectionFactory = new \Browscap\Data\Factory\DataCollectionFactory($logger);

$buildGenerator = new BuildGenerator(
    $resourceFolder,
    $buildFolder,
    $logger,
    $writerCollection,
    $dataCollectionFactory
);

$version       = '';    // what you want to be written into the generated file
$createZipFile = false; // It is not possible yet to create a zipped version of a custom named browscap file

$buildGenerator->run($version, $createZipFile);

How to build a custom browscap.ini

If you want to build a custom browscap file you may choose the file name and the fields which are included.

Note: It is not possible to build a custom browscap.ini file with the CLI command.

$logger = new \Monolog\Logger('browscap'); // or maybe any other PSR-3 compatible Logger

$format = \Browscap\Formatter\FormatterInterface::TYPE_PHP; // you may choose the output format you want, the format must be already supported
$file   = null; // you may set a custom file name here
$fields = []; // choose the fields you want inside of your browscap file

$resourceFolder = 'resources/'; // please point to the resources directory inside the project
$buildFolder = ''; // choose the directory where the generated file should be written to

$writerCollection = (new \Browscap\Writer\Factory\CustomWriterFactory())->createCollection($logger, $buildFolder, $file, $fields);

$dataCollectionFactory = new \Browscap\Data\Factory\DataCollectionFactory($logger);

$buildGenerator = new BuildGenerator(
    $resourceFolder,
    $buildFolder,
    $logger,
    $writerCollection,
    $dataCollectionFactory
);

$version       = '';    // what you want to be written into the generated file
$createZipFile = false; // It is not possible yet to create a zipped version of a custom named browscap file

$buildGenerator->run($version, $createZipFile);

Issues and feature requests

Please report your issues and ask for new features on the GitHub Issue Tracker at https://github.com/browscap/browscap/issues

Contributing

For instructions on how to contribute see the CONTRIBUTE.md file.

License

See the LICENSE file.

Comments
  • Apache Error

    Apache Error

    Just looked through the apache error_log file and noticed that ; within [bracketed] user agent fields, the semicolons (';') were logging errors to the error log. Not a biggie, the server still runs, just adds entries on start/restart to error_log. i used:

    $sed 's/[^;];[^;]/;/g' orig_browscap.ini > browscap.ini

    to escape the ';' this still logs parse errors on line 5318 and 17231. Platform: Fedora 20 Linux 64, apache-2.4x, php-5.5x

    bug 
    opened by michael-niniowski 34
  • Feature request. Add C# parser

    Feature request. Add C# parser

    Hi,

    I see that you have PHP parser implemented. It would be great if you could also implement C# parser. This way you can get a lot of new C# users.

    Regards, Andrei

    wishlist 
    opened by AndreiMaz 26
  • Pattern test coverage

    Pattern test coverage

    So as I'm condensing some of these patterns in various files (no particular method to the madness at the moment), I was a bit concerned that I may be modifying patterns incorrectly (even though I'm being careful not to). I was (incorrectly) under the assumption that if patterns are added to the resources, they've had a test added as well, but as I realized in #1251 this isn't always the case.

    I was curious how many patterns exist in the INI file that aren't touched by a test from the test suite.

    I extracted the patterns from the INI, but turned all digits into hash signs (#) in order to make the list a bit more manageable/realistic (I don't think it's terribly important that every possible version of every possible pattern is touched by a test, that would be a bit insane). I then ran the test suite, and extracted all patterns that were used against the user agents in the suite (again, replacing all digits with "#").

    I get 13,811 unique patterns (with digits removed) from the INI file (this is taken from the update step of browscap-php, so it doesn't include the "group" patterns).

    available_patterns.txt

    And from the test suite I get 3,467 patterns used.

    tested_patterns.txt

    If I'm doing this right, that leaves a lot of untested patterns! There are of course a lot of small variations in patterns aside from the version numbers (i.e. minor platform/device differences). And as I understand it, a lot of the files have a sort of "catch-all" pattern(s) that are used to at least identify the browser with basic properties based on the UA containing a certain structure/keywords for that browser. These probably don't typically have a test UA to go with them.

    Anyhow, I was curious what it would look like if I ran browscap-php against a large list of user-agents, and only dumped the patterns/uas that browscap doesn't cover during its own tests.

    The list I used comes from various other parsers' test suites (about 47k agents). This dumped 1,761 unique, uncovered patterns (with digits replaced with "#").

    all-suites-uncovered-patterns.txt

    And I've also extracted just one useragent string for each pattern and assembled those into a text file:

    useragents-from-uncovered-patterns.txt

    If you're at all curious to see all of the useragents collected during this process (that were parsed using an uncovered pattern), here's that list, grouped by each pattern:

    all-useragents-from-uncovered-patterns.txt

    Is there much interest in adding some of these useragents to the test-suite to increase the coverage of the patterns? Certainly a tedious task.

    Are there any built-in tools to analyze this better than the approach that I took?

    I could do this against a more "real world" list of agents if that seems like a better approach.

    opened by jaydiablo 25
  • Include JSON download on browscap.org

    Include JSON download on browscap.org

    I saw a pull that adds support for creating JSON, but it is not available for download on browscap.org. I think that most people (including me) would rather not compile it themselves, especially since automatic updates will be even more difficult with that.

    enhancement 
    opened by DaAwesomeP 21
  • Java Parsing Example

    Java Parsing Example

    This is parser example from Republer SSP code. Feel free to use it on include as sample / SDK code. Licensing / sublicensing permission (under browscap license(s)) is granted.

    opened by vlsergey 20
  • browser history

    browser history

    Hi,

    When try to access browser history getting like:

    object(stdClass)#1 (22) { ["browser_name_regex"]=> string(6) "§^.$§" ["browser_name_pattern"]=> string(1) "" ["browser"]=> string(7) "Default" ["version"]=> string(3) "0.0" ["majorver"]=> string(2) "#0" ["minorver"]=> string(2) "#0" ["frames"]=> string(6) "False " ["tables"]=> string(1) "1" ["cookies"]=> string(6) "False " ["backgroundsounds"]=> string(0) "" ["vbscript"]=> string(0) "" ["javascript"]=> string(0) "" ["javaapplets"]=> string(0) "" ["activexcontrols"]=> string(0) "" ["ak"]=> string(0) "" ["sk"]=> string(0) "" ["aol"]=> string(0) "" ["beta"]=> string(0) "" ["win16"]=> string(0) "" ["crawler"]=> string(0) "" ["cdf"]=> string(0) "" ["authenticodeupdate"]=> string(0) "" }

    code:

    $browser = get_browser($_SERVER['HTTP_USER_AGENT'], true); print_r($browser);

    And I tried also: $browser = get_browser(null, true); print_r($browser);

    Please help

    Pokal4u

    Update Agent 
    opened by pokal4u 20
  • syntax error on line 57

    syntax error on line 57

    PHP: syntax error, unexpected $end, expecting ']' in /etc/php.d/browscap.ini on line 57

    Just pulled the latest version from the website and I'm getting this when running scripts from cli.

    bug 
    opened by Dubz 19
  • Feature/2534 update apple platform versions

    Feature/2534 update apple platform versions

    #2534 Update Apple platform versions

    • Added 'OSX_dynamic' and 'OSX_10_16' for Mac OS
    • Added 'ipadOS_15_0' / 'ipadOS_15_2'
    • Added 'iOS_A_15_0' / 'iOS_A_15_2'
    • Added platform to the browsers that it runs on, also including the "generic" platforms to have better coverage for future versions (when the useragent remains the same)

    @asgrim @mimmi20 I did an attempt to add the recent Apple platform versions to browscap. Also added a "dynamic" OSX item in platforms.json

    I still don't exactly understand why those "dynamic" platforms are not added to all browsers, since that would help recognizing future versions which are not specified exactly in "platforms.json". I did that now for the Apple related platforms, but not sure if that's right. Can you help me on this logic? Maybe i'm misunderstanding and those generic ones shouldn't be added?

    enhancement New Agent 
    opened by paulrutter 18
  • Firefox platform versions

    Firefox platform versions

    I was looking for useragents in our logs that had a browser name, but were lacking a browser version. The browser that this seemed to happen to the most was Firefox, so I extracted just Firefox useragents that didn't have a version to dig around a bit to see if they should have a version (and planning to make necessary changes so they get the proper version).

    Which brings me to my question. This has sort of come up before when dealing with Samsung browser (and whether or not to add versions of the browser that apparently haven't been released), and with Safari and OSX versions.

    I was curious which versions of Firefox supported which versions of different platforms. It seems that some of this research has been done already, as I noticed that the platforms change a bit as you progress through Firefox versions, but it doesn't seem to be quite exact. For example, Firefox 2.0 is the last version of Firefox that will run on Windows 98 (officially, more on this in a bit), here's the ticket where Windows 9x support was removed: https://bugzilla.mozilla.org/show_bug.cgi?id=330276

    However, Browscap currently has Windows 98 as a platform for Firefox up to, and including version 3.8. There are 2 tests in the test suite which test for this (which I added as part of #1360, before doing any of this research).

    Above I said "officially", and the reason for that is that there are projects out there that patch older versions of windows so that they'll be able to run newer versions of software, like browsers. This project is one such project and it allows Windows 98 users to run newer Firefox versions: http://kernelex.sourceforge.net/wiki/Mozilla_Firefox (though it doesn't seem to work reliably for all versions of Firefox, that wiki page claims that Firefox 3.6 runs pretty well, Firefox 10 should run pretty well, but anything else suffers from bugs/glitches, or may not run at all).

    Most useragent parsers don't seem to care too much about this, since they're just looking for certain patterns in the string to determine which OS/version and Browser/version the agent is. Few look at all of the properties together when deciding how to parse. For example, here's a string I crafted that has Firefox 42 running on Windows 98, which probably isn't possible even with the very best kernel extensions. :)

    http://useragent.mkf.solutions/?userAgent=Mozilla%2F5.0+%28Windows%3B+U%3B+Win98%3B+bg%3B+rv%3A1.9.0.19%29+Gecko%2F20090624+Firefox%2F42.0

    So my question is, how should Browscap behave in these situations? Aside from the parsing aspect, removing some platforms from versions of the browser that aren't supported would reduce the number of patterns in the Browscap file, which I think is a good thing.

    As for the parsing, most likely the generic patterns would end up picking up agents like the one above (it doesn't happen in this case, because the Generic file for Firefox doesn't have "Win98" in it, but that should probably be added), so they would still be parsed as Firefox on whichever platform, but they wouldn't have a Firefox version number.

    Or, we could try to treat these as invalid patterns (like how browscap 6022 treats that fake pattern above), but that may be more difficult because that generic pattern file wouldn't be able to pick up these agents (which may mean that most patterns would have to be removed from it, or we'd at least have to be selective about which platforms show up in that file (like no Win98 for example, since we know that only certain version ranges of Firefox support Win98)).

    If we choose not to allow these platforms in version files where they shouldn't be, what should be done with the Kernel extension projects?

    IMO, I think the best approach may be to drop the platforms from the files for the versions that Firefox officially stopped supporting that platform, and make sure the generic file has all of the platforms in it so that the UAs still parse as Firefox, but will be version-less. (this is the approach I've been taking with recent changes I've been making).

    Thoughts? What's the official stance here?

    opened by jaydiablo 16
  • Nokia C7 issue

    Nokia C7 issue

    Dear browsecap team,

    I am trying to figure out why I obtain two different when comparing this UA "Mozilla/5.0 (Symbian/3; Series60/5.3 NokiaC7-00/111.040.1511; Profile/MIDP-2.1 Configuration/CLDC-1.1 ) AppleWebKit/535.1 (KHTML, like Gecko) NokiaBrowser/8.3.1.4 Mobile Safari/535.1 3gpp-gba"

    The browsecap.org web version say Nokia, mobile phone but the local version (full asp in a .NET c# application using http://www.gocher.me/C-Sharp-Browscap) says "unknown". What's your suggestion? Many thanks in advance. Roberto

    Update Agent 
    opened by kamakay 16
  • strong typing, refactoring

    strong typing, refactoring

    I added strong typing to most of the functions and removed most of the setters and getters and the fluid interfaces. Additional to that I did some refactorings.

    Because of the refactorings I had to write more unittests.

    This PR is required for PR #1520 and PR #1579.

    Fixes #1585 Fixes #1586 Fixes #1587

    enhancement 
    opened by mimmi20 15
  • Build(deps-dev): Bump browscap/browscap-php from 7.1.0 to 7.2.0

    Build(deps-dev): Bump browscap/browscap-php from 7.1.0 to 7.2.0

    Bumps browscap/browscap-php from 7.1.0 to 7.2.0.

    Release notes

    Sourced from browscap/browscap-php's releases.

    7.2.0

    Release Notes for 7.2.0

    Feature release (minor)

    7.2.0

    • Total issues resolved: 0
    • Total pull requests resolved: 1
    • Total contributors: 1

    enhancement

    Commits
    • a033f93 Merge pull request #515 from vemaeg/feature/php-8.2-support
    • 577bfe9 php 8.2 support
    • 8bd54ea Merge pull request #503 from browscap/dependabot/github_actions/ramsey/compos...
    • c56d506 github-actions: Bump ramsey/composer-install from 1 to 2
    • a99ed60 Merge pull request #502 from browscap/dependabot/github_actions/actions/depen...
    • 00184af github-actions: Bump actions/dependency-review-action from 2 to 3
    • 8cb3739 Merge pull request #504 from browscap/dependabot/github_actions/overtrue/phpl...
    • bc83a23 github-actions: Bump overtrue/phplint from 7.4 to 8.2
    • 9435a83 Merge pull request #514 from browscap/dependabot/github_actions/shivammathur/...
    • adecb72 github-actions: Bump shivammathur/setup-php from 2.22.0 to 2.23.0
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 0
  • Build(deps-dev): Bump phpstan/phpstan-phpunit from 1.1.1 to 1.3.3

    Build(deps-dev): Bump phpstan/phpstan-phpunit from 1.1.1 to 1.3.3

    Bumps phpstan/phpstan-phpunit from 1.1.1 to 1.3.3.

    Release notes

    Sourced from phpstan/phpstan-phpunit's releases.

    1.3.3

    • 54a24bd - Add support for data provider attributes
    • 7f7b59b - Update release-toot.yml
    • 64f4c56 - Create release-toot.yml

    1.3.2

    • cd9c693 - DataProviderDeclarationRule - report non-static dataProvider only with PHPUnit 10+

    1.3.1

    • b9827cf - Discover data providers from other classes
    • 008f5da - Update .gitattributes
    • bc0a290 - Do not use "strtolower" when there is a dedicated method
    • f9bfc19 - Report data providers deprecated usage

    1.3.0

    • 4c06b7e - Add rule to check @dataProvider
    • 8313d41 - Update dessant/lock-threads action to v4
    • a6aebda - Update metcalfc/changelog-generator action to v4
    • 2de71f9 - Revert "Do not require PHPStan 1.9.0 yet"

    1.2.2

    1.2.1

    • 09b5c9a - Do not require PHPStan 1.9.0 yet

    1.2.0

    • 9b88cef - Add rule that checks for invalid and unrecognized annotations
    • 68017cc - Fix build
    • fdda536 - Merge commit 'f92aab7' into 1.1.x
    • f92aab7 - Regression test
    • a0c1364 - Regression tests
    • ade3496 - Merge branch 'empty-hotfix2' into 1.1.x
    • 7267329 - Merge branch 'empty-hotfix' into 1.1.x
    • 5fcfe8f - Rules to check @covers and @coversDefaultClass for methods and classes
    • d963a07 - Fix build

    1.1.3

    1.1.2

    ... (truncated)

    Commits
    • 54a24bd Add support for data provider attributes
    • 7f7b59b Update release-toot.yml
    • 64f4c56 Create release-toot.yml
    • cd9c693 DataProviderDeclarationRule - report non-static dataProvider only with PHPUni...
    • b9827cf Discover data providers from other classes
    • 008f5da Update .gitattributes
    • bc0a290 Do not use "strtolower" when there is a dedicated method
    • f9bfc19 Report data providers deprecated usage
    • 4c06b7e Add rule to check @dataProvider
    • 8313d41 Update dessant/lock-threads action to v4
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 0
  • Build(deps-dev): Bump phpstan/phpstan from 1.8.2 to 1.9.4

    Build(deps-dev): Bump phpstan/phpstan from 1.8.2 to 1.9.4

    Bumps phpstan/phpstan from 1.8.2 to 1.9.4.

    Release notes

    Sourced from phpstan/phpstan's releases.

    1.9.4

    Improvements 🔧

    Bugfixes 🐛

    Internals 🔍

    • Implement getConstantStrings() on Type (#1979), thanks @​staabm!
    • Fix node PHPDoc type hints (#2053), thanks @​herndlm!
    • Refactor FilterVarDynamicReturnTypeExtension to pass around Types instead of Args and the Scope (#2109), thanks @​herndlm!

    1.9.3

    Bleeding edge 🔪

    If you want to see the shape of things to come and adopt bleeding edge features early, you can include this config file in your project's phpstan.neon:

    includes:
    	- vendor/phpstan/phpstan/conf/bleedingEdge.neon
    

    Of course, there are no backwards compatibility guarantees when you include this file. The behaviour and reported errors can change in minor versions with this file included. Learn more

    Improvements 🔧

    ... (truncated)

    Commits
    • d03bcce PHPStan 1.9.4
    • b22aa05 Updated PHPStan to commit 4025209062e31619077197006ce44b5d60a9f2c1
    • 811db85 Updated PHPStan to commit a7fed03bbf1bef545c8afcbf6c906ac93b34c876
    • 274d06e Infinite recursion regression test
    • ad9d3c7 Updated PHPStan to commit a8975b1800d6c5cb88a6af02e132b4e44e093fc3
    • 7a65fac Updated PHPStan to commit 2a61ebc7d07888dbb2836147edaa21b78a983065
    • c0086d9 output-format: add info about editorUrlTitle
    • 15377d9 Updated PHPStan to commit 901d789a45f0682bf6adbdfde516ec1011d873bb
    • 9a25ace Updated PHPStan to commit bc4b2fe0d83a0e601448dbdaa8b0a288342c23f3
    • 89c729c Updated PHPStan to commit 03786827d92df439c3a31760bcd98d560035a33f
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 0
  • Build(deps-dev): Bump phpstan/phpstan-deprecation-rules from 1.0.0 to 1.1.1

    Build(deps-dev): Bump phpstan/phpstan-deprecation-rules from 1.0.0 to 1.1.1

    Bumps phpstan/phpstan-deprecation-rules from 1.0.0 to 1.1.1.

    Release notes

    Sourced from phpstan/phpstan-deprecation-rules's releases.

    1.1.0

    • f6e02de - Override deprecationRulesInstalled config to true
    • 763fe3e - Update build.yml
    • b814f32 - Create tag workflow
    • 51139d3 - Fixes
    • de8683a - Update dependency slevomat/coding-standard to v7.2.1
    • 7bdf21f - Update FetchingDeprecatedConstRule.php
    • 914c542 - Update dependency slevomat/coding-standard to v7.2.0
    • 169d905 - Update dependency slevomat/coding-standard to v7.1
    • 82044cb - Drop alias
    • 755b8c2 - Update workflow
    • 1c3806d - Drop support for PHP 7.1, require PHPStan 1.5.0
    • aea2fbf - Update dependency slevomat/coding-standard to v7.0.20
    • 022b2de - Update actions/checkout action to v3
    • 21aa2be - Update dependency slevomat/coding-standard to v7.0.19
    • 52ce6c6 - Update dependency slevomat/coding-standard to v7
    • 5855ecd - Update renovate.json
    • 04ca04a - Update lock-closed-issues.yml
    • 4e3fd4d - Update github-actions
    • c838583 - Update metcalfc/changelog-generator action to v1.0.1
    • ef8f5a2 - Delete dependabot.yml
    • 0e3fae6 - Update and rename renovate.json to .github/renovate.json
    • d54e093 - Add renovate.json
    • 0a40844 - Update phpunit.xml
    • d63ce28 - Update release.yml
    • f8d8cb5 - Tweet release action
    • fb17fd1 - Allow Composer plugins
    • 7f052b7 - Revert "Use dev PHP-Parser"
    • 395d1ee - Test all jobs on PHP 8.1
    • d6102eb - Composer > Remove --no-suggest
    • b711513 - Test on PHP 8.1
    • 05df7ae - Use dev PHP-Parser
    • 2cbafb6 - Fix assertions for phpstan master
    Commits
    • 2c6792e Move deprecationRulesInstalled parameter to the right file
    • f6e02de Override deprecationRulesInstalled config to true
    • 763fe3e Update build.yml
    • b814f32 Create tag workflow
    • 51139d3 Fixes
    • de8683a Update dependency slevomat/coding-standard to v7.2.1
    • 7bdf21f Update FetchingDeprecatedConstRule.php
    • 914c542 Update dependency slevomat/coding-standard to v7.2.0
    • 169d905 Update dependency slevomat/coding-standard to v7.1
    • 82044cb Drop alias
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 0
  • Build(deps-dev): Bump doctrine/coding-standard from 9.0.0 to 11.0.0

    Build(deps-dev): Bump doctrine/coding-standard from 9.0.0 to 11.0.0

    Bumps doctrine/coding-standard from 9.0.0 to 11.0.0.

    Release notes

    Sourced from doctrine/coding-standard's releases.

    11.0.0

    Release Notes for 11.0.0

    Backwards incompatible release (major)

    11.0.0

    BC break,CI,New rule

    BC break,Improvement

    BC break,Improvement,New rule

    10.0.0

    Release Notes for 10.0.0

    Backwards incompatible release (major)

    10.0.0

    • Total issues resolved: 0
    • Total pull requests resolved: 10
    • Total contributors: 2

    New rules

    Dependencies

    ... (truncated)

    Commits
    • b6660e1 Merge pull request #304 from derrabus/improvement/allow-string-interpolation
    • c140fc0 String interpolation: don't suggest sprintf()
    • 8c3c932 Merge pull request #303 from greg0ire/11.0.x
    • 3790b91 Merge remote-tracking branch 'origin/10.1.x' into 11.0.x
    • 21c24ed Merge pull request #302 from doctrine/10.0.x
    • 91106f7 Merge pull request #300 from greg0ire/adjust-expectations
    • 39c6b23 Merge pull request #290 from GaryJones/patch-1
    • 4e45530 Adjust expectations
    • f44190b Merge pull request #297 from doctrine/10.0.x
    • 05c815d Merge pull request #298 from simPod/attributes
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 0
Releases(6.1.2)
Owner
Browser Capabilities Project
Browser Capabilities Project
A wrapper around symplify/config-transformer used to update recipes and using easy coding standard for generating readable config files.

Symfony Recipes Yaml to PHP Converter This is a wrapper around the symplify/config-transformer used to convert Symfony core recipes which uses .yaml c

Alexander Schranz 3 Nov 24, 2022
Skosmos is a web-based tool providing services for accessing controlled vocabularies, which are used by indexers describing documents and searchers looking for suitable keywords.

Skosmos is a web-based tool providing services for accessing controlled vocabularies, which are used by indexers describing documents and searchers looking for suitable keywords.

National Library of Finland 195 Dec 24, 2022
The task of this package is to manage module dotnev-files used by the Laravel integration of phpdotenv.

Warning This Package is still work in progress! Warning The package is basically functional, but there is no logic to handle the files in a repo. Modu

RedFreak_ 2 Nov 17, 2022
Provide CSV, JSON, XML and YAML files as an Import Source for the Icinga Director and optionally ship hand-crafted additional Icinga2 config files

Icinga Web 2 Fileshipper module The main purpose of this module is to extend Icinga Director using some of it's exported hooks. Based on them it offer

Icinga 25 Sep 18, 2022
Time registration tool build with Phalcon

PhalconTime Application PhalconTime is a timekeeping tool that helps you track hours spend on clients and projects. Please write me if you have any fe

null 6 Oct 7, 2022
Magento2 Spanish (Argentina) language pack build from Crowdin community translation tool.

Magento2-language-es_ar Magento2 Spanish (Argentina) language pack build from Crowdin community translation tool. Paquete de idioma de Español (Argent

SemExpert 2 Apr 7, 2021
Rafel is Remote Access Tool Used to Control Victims Using WebPanel With More Advance Features..

Rafel is Remote Access Tool Used to Control Victims Using WebPanel With More Advance Features..

swagkarna 690 Dec 28, 2022
Dispatcher is a Laravel artisan command scheduling tool used to schedule artisan commands within your project so you don't need to touch your crontab when deploying.

Dispatcher Dispatcher allows you to schedule your artisan commands within your Laravel project, eliminating the need to touch the crontab when deployi

Indatus 1.1k Dec 21, 2022
A tool that can be used to verify BC breaks between two versions of a PHP library.

Roave Backward Compatibility Check A tool that can be used to verify BC breaks between two versions of a PHP library. Pre-requisites/assumptions Your

Roave, LLC 530 Dec 27, 2022
Perch Dashboard app for exporting content to (Kirby) text files and Kirby Blueprint files

toKirby Perch Dashboard app for exporting content to (Kirby) text files and Kirby Blueprint files. You can easily install and test it in a few steps.

R. Banus 4 Jan 15, 2022
Tool for easy selection and export of user files in ZIP format.

Personal data export Idea Tool for easy selection and export of user files in ZIP format. Within a single selector, you choose all user data (much of

Baraja packages 2 Oct 18, 2021
m4b-tool is a command line utility to merge, split and chapterize audiobook files such as mp3, ogg, flac, m4a or m4b

m4b-tool m4b-tool is a is a wrapper for ffmpeg and mp4v2 to merge, split or and manipulate audiobook files with chapters. Although m4b-tool is designe

Andreas 798 Jan 8, 2023
Victor The Cleaner for Composer - This tool removes unnecessary files and directories from Composer vendor directory.

Victor The Cleaner for Composer This tool removes unnecessary files and directories from Composer vendor directory. The Cleaner leaves only directorie

David Grudl 133 Oct 26, 2022
An online system to keep digitized form of employee personal files (staff personal files)

An online system to keep digitized form of employee personal files (staff personal files).

p r o c e s s o r 2 Jun 18, 2022
PHP_Depend is an adaptation of the established Java development tool JDepend. This tool shows you the quality of your design in terms of extensibility, reusability and maintainability.

PHP Depend Documentation PHP Depend for enterprise Available as part of the Tidelift Subscription. The maintainers of PHP Depend and thousands of othe

PHP_Depend 837 Dec 14, 2022
This tool check syntax of PHP files faster than serial check with fancier output.

PHP Parallel Lint This application checks syntax of PHP files in parallel. It can output in plain text, colored text, json and checksyntax formats. Ad

PHP Parallel lint 202 Dec 22, 2022
Blacksmith is a code generation tool which automates the creation of common files that you'd typically create for each entity in your application.

Blacksmith is a code generation tool which automates the creation of common files that you'd typically create for each entity in your application.

Indatus 197 Dec 30, 2022
PHP Parallel Lint - This tool check syntax of PHP files faster than serial check with fancier output

PHP Parallel Lint This application checks syntax of PHP files in parallel. It can output in plain text, colored text, json and checksyntax formats. Ad

PHP Parallel lint 156 Apr 24, 2022