diff options
-rw-r--r-- | composer.json | 6 | ||||
-rw-r--r-- | composer.lock | 116 | ||||
-rw-r--r-- | vendor/composer/autoload_classmap.php | 8 | ||||
-rw-r--r-- | vendor/composer/autoload_psr4.php | 2 | ||||
-rw-r--r-- | vendor/composer/autoload_static.php | 10 | ||||
-rw-r--r-- | vendor/composer/installed.json | 120 | ||||
-rw-r--r-- | vendor/composer/installed.php | 22 | ||||
-rw-r--r-- | vendor/mmccook/php-json-canonicalization-scheme/CHANGELOG.md | 4 | ||||
-rw-r--r-- | vendor/mmccook/php-json-canonicalization-scheme/LICENSE.md | 21 | ||||
-rw-r--r-- | vendor/mmccook/php-json-canonicalization-scheme/README.md | 43 | ||||
-rw-r--r-- | vendor/mmccook/php-json-canonicalization-scheme/composer.json | 50 | ||||
-rw-r--r-- | vendor/mmccook/php-json-canonicalization-scheme/src/JsonCanonicalizator.php | 79 | ||||
-rw-r--r-- | vendor/mmccook/php-json-canonicalization-scheme/src/JsonCanonicalizatorFactory.php | 13 | ||||
-rw-r--r-- | vendor/mmccook/php-json-canonicalization-scheme/src/JsonCanonicalizatorInterface.php | 10 | ||||
-rw-r--r-- | vendor/mmccook/php-json-canonicalization-scheme/src/Utils.php | 52 | ||||
m--------- | vendor/streams/php-jcs | 0 |
16 files changed, 416 insertions, 140 deletions
diff --git a/composer.json b/composer.json index 94ea2dce5..e375b8a32 100644 --- a/composer.json +++ b/composer.json @@ -54,8 +54,8 @@ "spomky-labs/otphp": "^11.1", "patrickschur/language-detection": "^5.3", "stephenhill/base58": "^1.1", - "scssphp/scssphp": "^1.12", - "streams/php-jcs": "^1.0" + "mmccook/php-json-canonicalization-scheme": "^1.0", + "scssphp/scssphp": "^1.12" }, "require-dev": { "ext-yaml": "*", @@ -85,7 +85,7 @@ "repositories": [ { "type": "vcs", - "url": "https://codeberg.org/streams/php-jcs" + "url": "https://github.com/simplepie/simplepie" } ] } diff --git a/composer.lock b/composer.lock index bbbd69c33..584f08551 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": "6013575d755eff97ca9eb1401637b0cc", + "content-hash": "238129164013c0705a6a97f8c3ba617b", "packages": [ { "name": "blueimp/jquery-file-upload", @@ -742,6 +742,64 @@ "time": "2022-09-26T12:21:08+00:00" }, { + "name": "mmccook/php-json-canonicalization-scheme", + "version": "1.0.0", + "source": { + "type": "git", + "url": "https://github.com/mmccook/php-json-canonicalization-scheme.git", + "reference": "cd6d3e7645a2c1e62574a9a2437d68e9e74e799f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/mmccook/php-json-canonicalization-scheme/zipball/cd6d3e7645a2c1e62574a9a2437d68e9e74e799f", + "reference": "cd6d3e7645a2c1e62574a9a2437d68e9e74e799f", + "shasum": "" + }, + "require": { + "php": "^8.1" + }, + "require-dev": { + "friendsofphp/php-cs-fixer": "^3.13", + "pestphp/pest": "^1.20", + "phpstan/phpstan": "^1.10", + "spatie/ray": "^1.28" + }, + "type": "library", + "autoload": { + "psr-4": { + "Mmccook\\JsonCanonicalizator\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Mark M. McCook", + "email": "mark.mccook@gmail.com", + "role": "Developer" + } + ], + "description": "This is my package php-json-canonicalization-scheme", + "homepage": "https://github.com/mmccook/php-json-canonicalization-scheme", + "keywords": [ + "mmccook", + "php-json-canonicalization-scheme" + ], + "support": { + "issues": "https://github.com/mmccook/php-json-canonicalization-scheme/issues", + "source": "https://github.com/mmccook/php-json-canonicalization-scheme/tree/1.0.0" + }, + "funding": [ + { + "url": "https://github.com/mmccook", + "type": "github" + } + ], + "time": "2023-08-07T18:12:27+00:00" + }, + { "name": "paragonie/constant_time_encoding", "version": "v2.6.3", "source": { @@ -2035,62 +2093,6 @@ "time": "2019-08-22T16:51:59+00:00" }, { - "name": "streams/php-jcs", - "version": "1.0.1", - "source": { - "type": "git", - "url": "https://codeberg.org/streams/php-jcs", - "reference": "a0953ad4f4d3586d5e008b8498cc79154fca8332" - }, - "require": { - "php": "^8.1" - }, - "require-dev": { - "friendsofphp/php-cs-fixer": "^3.13", - "pestphp/pest": "^1.20", - "phpstan/phpstan": "^1.10", - "spatie/ray": "^1.28" - }, - "type": "library", - "autoload": { - "psr-4": { - "Mmccook\\JsonCanonicalizator\\": "src" - } - }, - "autoload-dev": { - "psr-4": { - "Mmccook\\JsonCanonicalizator\\Tests\\": "tests" - } - }, - "scripts": { - "test": [ - "vendor/bin/pest" - ], - "test-coverage": [ - "vendor/bin/pest --coverage" - ], - "format": [ - "vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php --allow-risky=yes" - ] - }, - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Mark M. McCook", - "email": "mark.mccook@gmail.com", - "role": "Developer" - } - ], - "description": "This is my package php-json-canonicalization-scheme", - "homepage": "https://codeberg.org/streams/php-jcs", - "keywords": [ - "php-json-canonicalization-scheme" - ], - "time": "2024-03-12T10:28:59+00:00" - }, - { "name": "symfony/polyfill-php81", "version": "v1.29.0", "source": { diff --git a/vendor/composer/autoload_classmap.php b/vendor/composer/autoload_classmap.php index a7a81ba0e..9df6511aa 100644 --- a/vendor/composer/autoload_classmap.php +++ b/vendor/composer/autoload_classmap.php @@ -319,10 +319,10 @@ return array( 'Michelf\\Markdown' => $vendorDir . '/michelf/php-markdown/Michelf/Markdown.php', 'Michelf\\MarkdownExtra' => $vendorDir . '/michelf/php-markdown/Michelf/MarkdownExtra.php', 'Michelf\\MarkdownInterface' => $vendorDir . '/michelf/php-markdown/Michelf/MarkdownInterface.php', - 'Mmccook\\JsonCanonicalizator\\JsonCanonicalizator' => $vendorDir . '/streams/php-jcs/src/JsonCanonicalizator.php', - 'Mmccook\\JsonCanonicalizator\\JsonCanonicalizatorFactory' => $vendorDir . '/streams/php-jcs/src/JsonCanonicalizatorFactory.php', - 'Mmccook\\JsonCanonicalizator\\JsonCanonicalizatorInterface' => $vendorDir . '/streams/php-jcs/src/JsonCanonicalizatorInterface.php', - 'Mmccook\\JsonCanonicalizator\\Utils' => $vendorDir . '/streams/php-jcs/src/Utils.php', + 'Mmccook\\JsonCanonicalizator\\JsonCanonicalizator' => $vendorDir . '/mmccook/php-json-canonicalization-scheme/src/JsonCanonicalizator.php', + 'Mmccook\\JsonCanonicalizator\\JsonCanonicalizatorFactory' => $vendorDir . '/mmccook/php-json-canonicalization-scheme/src/JsonCanonicalizatorFactory.php', + 'Mmccook\\JsonCanonicalizator\\JsonCanonicalizatorInterface' => $vendorDir . '/mmccook/php-json-canonicalization-scheme/src/JsonCanonicalizatorInterface.php', + 'Mmccook\\JsonCanonicalizator\\Utils' => $vendorDir . '/mmccook/php-json-canonicalization-scheme/src/Utils.php', 'OAuth2\\Autoloader' => $vendorDir . '/bshaffer/oauth2-server-php/src/OAuth2/Autoloader.php', 'OAuth2\\ClientAssertionType\\ClientAssertionTypeInterface' => $vendorDir . '/bshaffer/oauth2-server-php/src/OAuth2/ClientAssertionType/ClientAssertionTypeInterface.php', 'OAuth2\\ClientAssertionType\\HttpBasic' => $vendorDir . '/bshaffer/oauth2-server-php/src/OAuth2/ClientAssertionType/HttpBasic.php', diff --git a/vendor/composer/autoload_psr4.php b/vendor/composer/autoload_psr4.php index aef4c5030..c2a27512d 100644 --- a/vendor/composer/autoload_psr4.php +++ b/vendor/composer/autoload_psr4.php @@ -27,7 +27,7 @@ return array( 'Psr\\Log\\' => array($vendorDir . '/psr/log/src'), 'ParagonIE\\ConstantTime\\' => array($vendorDir . '/paragonie/constant_time_encoding/src'), 'OTPHP\\' => array($vendorDir . '/spomky-labs/otphp/src'), - 'Mmccook\\JsonCanonicalizator\\' => array($vendorDir . '/streams/php-jcs/src'), + 'Mmccook\\JsonCanonicalizator\\' => array($vendorDir . '/mmccook/php-json-canonicalization-scheme/src'), 'Michelf\\' => array($vendorDir . '/michelf/php-markdown/Michelf'), 'League\\HTMLToMarkdown\\' => array($vendorDir . '/league/html-to-markdown/src'), 'LanguageDetection\\' => array($vendorDir . '/patrickschur/language-detection/src/LanguageDetection'), diff --git a/vendor/composer/autoload_static.php b/vendor/composer/autoload_static.php index d799828c5..d6f2c2f9d 100644 --- a/vendor/composer/autoload_static.php +++ b/vendor/composer/autoload_static.php @@ -182,7 +182,7 @@ class ComposerStaticInit7b34d7e50a62201ec5d5e526a5b8b35d ), 'Mmccook\\JsonCanonicalizator\\' => array ( - 0 => __DIR__ . '/..' . '/streams/php-jcs/src', + 0 => __DIR__ . '/..' . '/mmccook/php-json-canonicalization-scheme/src', ), 'Michelf\\' => array ( @@ -566,10 +566,10 @@ class ComposerStaticInit7b34d7e50a62201ec5d5e526a5b8b35d 'Michelf\\Markdown' => __DIR__ . '/..' . '/michelf/php-markdown/Michelf/Markdown.php', 'Michelf\\MarkdownExtra' => __DIR__ . '/..' . '/michelf/php-markdown/Michelf/MarkdownExtra.php', 'Michelf\\MarkdownInterface' => __DIR__ . '/..' . '/michelf/php-markdown/Michelf/MarkdownInterface.php', - 'Mmccook\\JsonCanonicalizator\\JsonCanonicalizator' => __DIR__ . '/..' . '/streams/php-jcs/src/JsonCanonicalizator.php', - 'Mmccook\\JsonCanonicalizator\\JsonCanonicalizatorFactory' => __DIR__ . '/..' . '/streams/php-jcs/src/JsonCanonicalizatorFactory.php', - 'Mmccook\\JsonCanonicalizator\\JsonCanonicalizatorInterface' => __DIR__ . '/..' . '/streams/php-jcs/src/JsonCanonicalizatorInterface.php', - 'Mmccook\\JsonCanonicalizator\\Utils' => __DIR__ . '/..' . '/streams/php-jcs/src/Utils.php', + 'Mmccook\\JsonCanonicalizator\\JsonCanonicalizator' => __DIR__ . '/..' . '/mmccook/php-json-canonicalization-scheme/src/JsonCanonicalizator.php', + 'Mmccook\\JsonCanonicalizator\\JsonCanonicalizatorFactory' => __DIR__ . '/..' . '/mmccook/php-json-canonicalization-scheme/src/JsonCanonicalizatorFactory.php', + 'Mmccook\\JsonCanonicalizator\\JsonCanonicalizatorInterface' => __DIR__ . '/..' . '/mmccook/php-json-canonicalization-scheme/src/JsonCanonicalizatorInterface.php', + 'Mmccook\\JsonCanonicalizator\\Utils' => __DIR__ . '/..' . '/mmccook/php-json-canonicalization-scheme/src/Utils.php', 'OAuth2\\Autoloader' => __DIR__ . '/..' . '/bshaffer/oauth2-server-php/src/OAuth2/Autoloader.php', 'OAuth2\\ClientAssertionType\\ClientAssertionTypeInterface' => __DIR__ . '/..' . '/bshaffer/oauth2-server-php/src/OAuth2/ClientAssertionType/ClientAssertionTypeInterface.php', 'OAuth2\\ClientAssertionType\\HttpBasic' => __DIR__ . '/..' . '/bshaffer/oauth2-server-php/src/OAuth2/ClientAssertionType/HttpBasic.php', diff --git a/vendor/composer/installed.json b/vendor/composer/installed.json index a8d1416d7..8e6b10647 100644 --- a/vendor/composer/installed.json +++ b/vendor/composer/installed.json @@ -764,6 +764,67 @@ "install-path": "../michelf/php-markdown" }, { + "name": "mmccook/php-json-canonicalization-scheme", + "version": "1.0.0", + "version_normalized": "1.0.0.0", + "source": { + "type": "git", + "url": "https://github.com/mmccook/php-json-canonicalization-scheme.git", + "reference": "cd6d3e7645a2c1e62574a9a2437d68e9e74e799f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/mmccook/php-json-canonicalization-scheme/zipball/cd6d3e7645a2c1e62574a9a2437d68e9e74e799f", + "reference": "cd6d3e7645a2c1e62574a9a2437d68e9e74e799f", + "shasum": "" + }, + "require": { + "php": "^8.1" + }, + "require-dev": { + "friendsofphp/php-cs-fixer": "^3.13", + "pestphp/pest": "^1.20", + "phpstan/phpstan": "^1.10", + "spatie/ray": "^1.28" + }, + "time": "2023-08-07T18:12:27+00:00", + "type": "library", + "installation-source": "dist", + "autoload": { + "psr-4": { + "Mmccook\\JsonCanonicalizator\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Mark M. McCook", + "email": "mark.mccook@gmail.com", + "role": "Developer" + } + ], + "description": "This is my package php-json-canonicalization-scheme", + "homepage": "https://github.com/mmccook/php-json-canonicalization-scheme", + "keywords": [ + "mmccook", + "php-json-canonicalization-scheme" + ], + "support": { + "issues": "https://github.com/mmccook/php-json-canonicalization-scheme/issues", + "source": "https://github.com/mmccook/php-json-canonicalization-scheme/tree/1.0.0" + }, + "funding": [ + { + "url": "https://github.com/mmccook", + "type": "github" + } + ], + "install-path": "../mmccook/php-json-canonicalization-scheme" + }, + { "name": "paragonie/constant_time_encoding", "version": "v2.6.3", "version_normalized": "2.6.3.0", @@ -2111,65 +2172,6 @@ "install-path": "../stephenhill/base58" }, { - "name": "streams/php-jcs", - "version": "1.0.1", - "version_normalized": "1.0.1.0", - "source": { - "type": "git", - "url": "https://codeberg.org/streams/php-jcs", - "reference": "a0953ad4f4d3586d5e008b8498cc79154fca8332" - }, - "require": { - "php": "^8.1" - }, - "require-dev": { - "friendsofphp/php-cs-fixer": "^3.13", - "pestphp/pest": "^1.20", - "phpstan/phpstan": "^1.10", - "spatie/ray": "^1.28" - }, - "time": "2024-03-12T10:28:59+00:00", - "type": "library", - "installation-source": "source", - "autoload": { - "psr-4": { - "Mmccook\\JsonCanonicalizator\\": "src" - } - }, - "autoload-dev": { - "psr-4": { - "Mmccook\\JsonCanonicalizator\\Tests\\": "tests" - } - }, - "scripts": { - "test": [ - "vendor/bin/pest" - ], - "test-coverage": [ - "vendor/bin/pest --coverage" - ], - "format": [ - "vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php --allow-risky=yes" - ] - }, - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Mark M. McCook", - "email": "mark.mccook@gmail.com", - "role": "Developer" - } - ], - "description": "This is my package php-json-canonicalization-scheme", - "homepage": "https://codeberg.org/streams/php-jcs", - "keywords": [ - "php-json-canonicalization-scheme" - ], - "install-path": "../streams/php-jcs" - }, - { "name": "symfony/polyfill-php81", "version": "v1.29.0", "version_normalized": "1.29.0.0", diff --git a/vendor/composer/installed.php b/vendor/composer/installed.php index 16361a5b1..8925761d5 100644 --- a/vendor/composer/installed.php +++ b/vendor/composer/installed.php @@ -3,7 +3,7 @@ 'name' => 'zotlabs/hubzilla', 'pretty_version' => 'dev-master', 'version' => 'dev-master', - 'reference' => 'dddcddc453bdbd59e1cafcb8ca8aeb2225dfda9d', + 'reference' => 'a9d4adaf2360f7d02dace4434e4e62d6ce072327', 'type' => 'application', 'install_path' => __DIR__ . '/../../', 'aliases' => array(), @@ -118,6 +118,15 @@ 'aliases' => array(), 'dev_requirement' => false, ), + 'mmccook/php-json-canonicalization-scheme' => array( + 'pretty_version' => '1.0.0', + 'version' => '1.0.0.0', + 'reference' => 'cd6d3e7645a2c1e62574a9a2437d68e9e74e799f', + 'type' => 'library', + 'install_path' => __DIR__ . '/../mmccook/php-json-canonicalization-scheme', + 'aliases' => array(), + 'dev_requirement' => false, + ), 'paragonie/constant_time_encoding' => array( 'pretty_version' => 'v2.6.3', 'version' => '2.6.3.0', @@ -286,15 +295,6 @@ 'aliases' => array(), 'dev_requirement' => false, ), - 'streams/php-jcs' => array( - 'pretty_version' => '1.0.1', - 'version' => '1.0.1.0', - 'reference' => 'a0953ad4f4d3586d5e008b8498cc79154fca8332', - 'type' => 'library', - 'install_path' => __DIR__ . '/../streams/php-jcs', - 'aliases' => array(), - 'dev_requirement' => false, - ), 'symfony/polyfill-php81' => array( 'pretty_version' => 'v1.29.0', 'version' => '1.29.0.0', @@ -340,7 +340,7 @@ 'zotlabs/hubzilla' => array( 'pretty_version' => 'dev-master', 'version' => 'dev-master', - 'reference' => 'dddcddc453bdbd59e1cafcb8ca8aeb2225dfda9d', + 'reference' => 'a9d4adaf2360f7d02dace4434e4e62d6ce072327', 'type' => 'application', 'install_path' => __DIR__ . '/../../', 'aliases' => array(), diff --git a/vendor/mmccook/php-json-canonicalization-scheme/CHANGELOG.md b/vendor/mmccook/php-json-canonicalization-scheme/CHANGELOG.md new file mode 100644 index 000000000..a9bd9a22b --- /dev/null +++ b/vendor/mmccook/php-json-canonicalization-scheme/CHANGELOG.md @@ -0,0 +1,4 @@ +# Changelog + +All notable changes to `php-json-canonicalization-scheme` will be documented in this file. + diff --git a/vendor/mmccook/php-json-canonicalization-scheme/LICENSE.md b/vendor/mmccook/php-json-canonicalization-scheme/LICENSE.md new file mode 100644 index 000000000..bbd0c5b62 --- /dev/null +++ b/vendor/mmccook/php-json-canonicalization-scheme/LICENSE.md @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) mmccook <mark.mccook@gmail.com> + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/vendor/mmccook/php-json-canonicalization-scheme/README.md b/vendor/mmccook/php-json-canonicalization-scheme/README.md new file mode 100644 index 000000000..780c431b3 --- /dev/null +++ b/vendor/mmccook/php-json-canonicalization-scheme/README.md @@ -0,0 +1,43 @@ +# JSON Canonicalization for PHP 8.1+ + +[![Latest Version on Packagist](https://img.shields.io/packagist/v/mmccook/php-json-canonicalization-scheme.svg?style=flat-square)](https://packagist.org/packages/mmccook/php-json-canonicalization-scheme) +[![Tests](https://img.shields.io/github/actions/workflow/status/mmccook/php-json-canonicalization-scheme/run-tests.yml?branch=main&label=tests&style=flat-square)](https://github.com/mmccook/php-json-canonicalization-scheme/actions/workflows/run-tests.yml) +[![Total Downloads](https://img.shields.io/packagist/dt/mmccook/php-json-canonicalization-scheme.svg?style=flat-square)](https://packagist.org/packages/mmccook/php-json-canonicalization-scheme) + +Needed a way to canonicalize JSON to validate webhooks from [The Campaign Registry](https://csp-api.campaignregistry.com/v2/restAPI) +couldn't find an actively maintained package that all passed the JCS tests, so I used the one listed on the JCS Github and updated/refactored it. + +## Installation + +You can install the package via composer: + +```bash +composer require mmccook/php-json-canonicalization-scheme +``` + +## Usage + +```php +$canonicalization = JsonCanonicalizatorFactory::getInstance(); +$canonicalizedJsonString = $canonicalization->canonicalize($input); +``` + +## Testing + +```bash +composer test +``` + +## Changelog + +Please see [CHANGELOG](CHANGELOG.md) for more information on what has changed recently. + +## Contributing + +Please see [CONTRIBUTING](https://github.com/spatie/.github/blob/main/CONTRIBUTING.md) for details. + +## Credits +- [Mark M. McCook](https://github.com/mmccook) + +## License +The MIT License (MIT). Please see [License File](LICENSE.md) for more information. diff --git a/vendor/mmccook/php-json-canonicalization-scheme/composer.json b/vendor/mmccook/php-json-canonicalization-scheme/composer.json new file mode 100644 index 000000000..62f712dcc --- /dev/null +++ b/vendor/mmccook/php-json-canonicalization-scheme/composer.json @@ -0,0 +1,50 @@ +{ + "name": "mmccook/php-json-canonicalization-scheme", + "description": "This is my package php-json-canonicalization-scheme", + "keywords": [ + "mmccook", + "php-json-canonicalization-scheme" + ], + "homepage": "https://github.com/mmccook/php-json-canonicalization-scheme", + "license": "MIT", + "authors": [ + { + "name": "Mark M. McCook", + "email": "mark.mccook@gmail.com", + "role": "Developer" + } + ], + "require": { + "php": "^8.1" + }, + "require-dev": { + "friendsofphp/php-cs-fixer": "^3.13", + "pestphp/pest": "^1.20", + "phpstan/phpstan": "^1.10", + "spatie/ray": "^1.28" + }, + "autoload": { + "psr-4": { + "Mmccook\\JsonCanonicalizator\\": "src" + } + }, + "autoload-dev": { + "psr-4": { + "Mmccook\\JsonCanonicalizator\\Tests\\": "tests" + } + }, + "scripts": { + "test": "vendor/bin/pest", + "test-coverage": "vendor/bin/pest --coverage", + "format": "vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php --allow-risky=yes" + }, + "config": { + "sort-packages": true, + "allow-plugins": { + "pestphp/pest-plugin": true, + "phpstan/extension-installer": true + } + }, + "minimum-stability": "stable", + "prefer-stable": true +} diff --git a/vendor/mmccook/php-json-canonicalization-scheme/src/JsonCanonicalizator.php b/vendor/mmccook/php-json-canonicalization-scheme/src/JsonCanonicalizator.php new file mode 100644 index 000000000..6a3c82959 --- /dev/null +++ b/vendor/mmccook/php-json-canonicalization-scheme/src/JsonCanonicalizator.php @@ -0,0 +1,79 @@ +<?php + +namespace Mmccook\JsonCanonicalizator; + +class JsonCanonicalizator implements JsonCanonicalizatorInterface +{ + public const JSON_FLAGS = \JSON_UNESCAPED_UNICODE | \JSON_UNESCAPED_SLASHES; + + /** + * @param $data + * @param bool $asHex + * @return string + */ + public function canonicalize($data, bool $asHex = false): string + { + ob_start(); + + $this->serialize($data); + + $result = ob_get_clean(); + + return $asHex ? Utils::asHex($result) : $result; + } + + private function serialize($item) + { + if (is_float($item)) { + echo Utils::es6NumberFormat($item); + + return; + } + + if (null === $item || is_scalar($item)) { + echo json_encode($item, self::JSON_FLAGS); + + return; + } + + if (is_array($item) && ! Utils::isAssoc($item)) { + echo '['; + $next = false; + foreach ($item as $element) { + if ($next) { + echo ','; + } + $next = true; + $this->serialize($element); + } + echo ']'; + + return; + } + + if (is_object($item)) { + $item = (array)$item; + } + + uksort($item, function (string $a, string $b) { + $a = mb_convert_encoding($a, 'UTF-16BE'); + $b = mb_convert_encoding($b, 'UTF-16BE'); + + return strcmp($a, $b); + }); + + echo '{'; + $next = false; + foreach ($item as $key => $value) { + //var_dump($key, $value); + if ($next) { + echo ','; + } + $next = true; + $outKey = json_encode((string)$key, self::JSON_FLAGS); + echo $outKey, ':', $this->serialize($value); + } + echo '}'; + + } +} diff --git a/vendor/mmccook/php-json-canonicalization-scheme/src/JsonCanonicalizatorFactory.php b/vendor/mmccook/php-json-canonicalization-scheme/src/JsonCanonicalizatorFactory.php new file mode 100644 index 000000000..68b1c50c9 --- /dev/null +++ b/vendor/mmccook/php-json-canonicalization-scheme/src/JsonCanonicalizatorFactory.php @@ -0,0 +1,13 @@ +<?php + +declare(strict_types=1); + +namespace Mmccook\JsonCanonicalizator; + +class JsonCanonicalizatorFactory +{ + public static function getInstance(): JsonCanonicalizator + { + return new JsonCanonicalizator(); + } +} diff --git a/vendor/mmccook/php-json-canonicalization-scheme/src/JsonCanonicalizatorInterface.php b/vendor/mmccook/php-json-canonicalization-scheme/src/JsonCanonicalizatorInterface.php new file mode 100644 index 000000000..73b25c086 --- /dev/null +++ b/vendor/mmccook/php-json-canonicalization-scheme/src/JsonCanonicalizatorInterface.php @@ -0,0 +1,10 @@ +<?php + +declare(strict_types=1); + +namespace Mmccook\JsonCanonicalizator; + +interface JsonCanonicalizatorInterface +{ + public function canonicalize($data, bool $asHex): string; +} diff --git a/vendor/mmccook/php-json-canonicalization-scheme/src/Utils.php b/vendor/mmccook/php-json-canonicalization-scheme/src/Utils.php new file mode 100644 index 000000000..57079df3b --- /dev/null +++ b/vendor/mmccook/php-json-canonicalization-scheme/src/Utils.php @@ -0,0 +1,52 @@ +<?php + +namespace Mmccook\JsonCanonicalizator; + +class Utils +{ + /** + * @param array $array + * @return bool + */ + public static function isAssoc(array $array): bool + { + $keys = array_keys($array); + + return array_keys($keys) !== $keys; + } + + public static function asHex(string $data): string + { + return rtrim(chunk_split(bin2hex($data), 2, ' ')); + } + + public static function es6NumberFormat(float $number): string + { + + if (is_nan($number) || is_infinite($number)) { + throw new \RuntimeException("can't use Nan or Infinity in json"); + } + + if (0.0 === $number) { + return '0'; + } + + $sign = ''; + if ($number < 0) { + $sign = '-'; + $number = -$number; + } + + if ($number < 1e+21 && $number >= 1e-6) { + $formatted = number_format($number, 7, '.', ''); + $formatted = rtrim($formatted, '.0'); + } else { + $formatted = sprintf('%e', $number); + $parts = explode('e', $formatted); + $parts[0] = rtrim($parts[0], '.0'); + $formatted = implode('e', $parts); + } + + return $sign . $formatted; + } +} diff --git a/vendor/streams/php-jcs b/vendor/streams/php-jcs deleted file mode 160000 -Subproject a0953ad4f4d3586d5e008b8498cc79154fca833 |