diff --git a/bard.json b/bard.json index ca59433a..5328dfba 100644 --- a/bard.json +++ b/bard.json @@ -47,7 +47,10 @@ }, { "path": "src/SonsOfPHP/Bundle/Cqrs", - "repository": "git@github.com:SonsOfPHP/cqrs-bundle.git" + "repository": "git@github.com:SonsOfPHP/cqrs-bundle.git", + "config": { + "merge": false + } }, { "path": "src/SonsOfPHP/Bridge/Symfony/Cqrs", @@ -188,6 +191,13 @@ { "path": "src/SonsOfPHP/Contract/Version", "repository": "git@github.com:SonsOfPHP/version-contract.git" + }, + { + "path": "src/SonsOfPHP/Bundle/FeatureToggleBundle", + "repository": "git@github.com:SonsOfPHP/feature-toggle-bundle.git", + "config": { + "merge": false + } } ] -} \ No newline at end of file +} diff --git a/composer.json b/composer.json index bac2561a..2b06555c 100644 --- a/composer.json +++ b/composer.json @@ -12,6 +12,10 @@ "homepage": "https://github.com/SonsOfPHP", "license": "MIT", "authors": [ + { + "name": "Sons of PHP Community", + "homepage": "https://github.com/SonsOfPHP/sonsofphp/graphs/contributors" + }, { "name": "Joshua Estes", "email": "joshua@sonsofphp.com" @@ -79,11 +83,8 @@ "psr/log": "^2.0 || ^3.0", "psr/simple-cache": "^2.0 || ^3.0", "symfony/console": "^4 || ^5 || ^6 || ^7", - "symfony/dependency-injection": "^5 || ^6 || ^7", "symfony/dotenv": "^5 || ^6 || ^7", "symfony/finder": "^5 || ^6 || ^7", - "symfony/http-kernel": "^5 || ^6 || ^7", - "symfony/messenger": "^5 || ^6 || ^7", "symfony/options-resolver": "^6 || ^7", "symfony/process": "^5 || ^6 || ^7", "symfony/security-bundle": "^6 || ^7", @@ -100,7 +101,6 @@ "sonsofphp/cookie": "self.version", "sonsofphp/cookie-contract": "self.version", "sonsofphp/cqrs": "self.version", - "sonsofphp/cqrs-bundle": "self.version", "sonsofphp/cqrs-contract": "self.version", "sonsofphp/cqrs-symfony": "self.version", "sonsofphp/event-dispatcher": "self.version", @@ -150,7 +150,6 @@ "src/SonsOfPHP/Component/Container/Tests", "src/SonsOfPHP/Component/Cookie/Tests", "src/SonsOfPHP/Component/Cqrs/Tests", - "src/SonsOfPHP/Bundle/Cqrs/Tests", "src/SonsOfPHP/Bridge/Symfony/Cqrs/Tests", "src/SonsOfPHP/Bridge/Symfony/EventSourcing/Tests", "src/SonsOfPHP/Bridge/Twig/Money/Tests", @@ -186,7 +185,6 @@ "SonsOfPHP\\Bridge\\Symfony\\Cqrs\\": "src/SonsOfPHP/Bridge/Symfony/Cqrs", "SonsOfPHP\\Bridge\\Symfony\\EventSourcing\\": "src/SonsOfPHP/Bridge/Symfony/EventSourcing", "SonsOfPHP\\Bridge\\Twig\\Money\\": "src/SonsOfPHP/Bridge/Twig/Money", - "SonsOfPHP\\Bundle\\Cqrs\\": "src/SonsOfPHP/Bundle/Cqrs", "SonsOfPHP\\Component\\Assert\\": "src/SonsOfPHP/Component/Assert", "SonsOfPHP\\Component\\Cache\\": "src/SonsOfPHP/Component/Cache", "SonsOfPHP\\Component\\Clock\\": "src/SonsOfPHP/Component/Clock", @@ -234,13 +232,13 @@ "require-dev": { "phpunit/phpunit": "^10.4", "symfony/http-foundation": "^5 || ^6 || ^7", + "symfony/messenger": "^5 || ^6 || ^7", "symfony/serializer": "^5 || ^6 || ^7" }, "autoload-dev": { "psr-4": { "SonsOfPHP\\Bard\\Tests\\": "src/SonsOfPHP/Bard/Tests", - "SonsOfPHP\\Bridge\\Symfony\\Cqrs\\Tests\\": "src/SonsOfPHP/Bridge/Symfony/Cqrs/Tests", - "SonsOfPHP\\Bundle\\Cqrs\\Tests\\": "src/SonsOfPHP/Bundle/Cqrs/Tests" + "SonsOfPHP\\Bridge\\Symfony\\Cqrs\\Tests\\": "src/SonsOfPHP/Bridge/Symfony/Cqrs/Tests" } }, "scripts": { diff --git a/src/SonsOfPHP/Bard/composer.json b/src/SonsOfPHP/Bard/composer.json index e59ba433..e2a014a6 100644 --- a/src/SonsOfPHP/Bard/composer.json +++ b/src/SonsOfPHP/Bard/composer.json @@ -52,6 +52,10 @@ "docs": "https://docs.sonsofphp.com" }, "authors": [ + { + "name": "Sons of PHP Community", + "homepage": "https://github.com/SonsOfPHP/sonsofphp/graphs/contributors" + }, { "name": "Joshua Estes", "email": "joshua@sonsofphp.com" diff --git a/src/SonsOfPHP/Bard/src/Console/Command/MergeCommand.php b/src/SonsOfPHP/Bard/src/Console/Command/MergeCommand.php index 64d2e1aa..2373f385 100644 --- a/src/SonsOfPHP/Bard/src/Console/Command/MergeCommand.php +++ b/src/SonsOfPHP/Bard/src/Console/Command/MergeCommand.php @@ -70,6 +70,11 @@ protected function execute(InputInterface $input, OutputInterface $output): int ; foreach ($this->bardConfig->getSection('packages') as $pkg) { + if (array_key_exists('config', $pkg) && array_key_exists('merge', $pkg['config']) && false === $pkg['config']['merge']) { + // Do not merge this package + continue; + } + $pkgComposerFile = realpath($input->getOption('working-dir') . '/' . $pkg['path'] . '/composer.json'); if (!file_exists($pkgComposerFile)) { $output->writeln(sprintf('No "%s" found, skipping', $pkgComposerFile)); @@ -116,6 +121,8 @@ protected function execute(InputInterface $input, OutputInterface $output): int $io->text(sprintf('Updated "%s"', $rootComposerJsonFile->getRealPath())); } + // @todo if not dry-run, run composer dump + $io->success('Merge Complete'); return self::SUCCESS; diff --git a/src/SonsOfPHP/Bridge/Aws/Filesystem/composer.json b/src/SonsOfPHP/Bridge/Aws/Filesystem/composer.json index 45a86403..d17e20a6 100644 --- a/src/SonsOfPHP/Bridge/Aws/Filesystem/composer.json +++ b/src/SonsOfPHP/Bridge/Aws/Filesystem/composer.json @@ -10,6 +10,10 @@ "homepage": "https://github.com/SonsOfPHP/filesystem-aws", "license": "MIT", "authors": [ + { + "name": "Sons of PHP Community", + "homepage": "https://github.com/SonsOfPHP/sonsofphp/graphs/contributors" + }, { "name": "Joshua Estes", "email": "joshua@sonsofphp.com" diff --git a/src/SonsOfPHP/Bridge/Doctrine/Collections/Pager/composer.json b/src/SonsOfPHP/Bridge/Doctrine/Collections/Pager/composer.json index b3de330d..5a57913d 100644 --- a/src/SonsOfPHP/Bridge/Doctrine/Collections/Pager/composer.json +++ b/src/SonsOfPHP/Bridge/Doctrine/Collections/Pager/composer.json @@ -8,6 +8,10 @@ "homepage": "https://github.com/SonsOfPHP/pager-doctrine-collections", "license": "MIT", "authors": [ + { + "name": "Sons of PHP Community", + "homepage": "https://github.com/SonsOfPHP/sonsofphp/graphs/contributors" + }, { "name": "Joshua Estes", "email": "joshua@sonsofphp.com" diff --git a/src/SonsOfPHP/Bridge/Doctrine/DBAL/Pager/composer.json b/src/SonsOfPHP/Bridge/Doctrine/DBAL/Pager/composer.json index 4be23a91..ab9c3be8 100644 --- a/src/SonsOfPHP/Bridge/Doctrine/DBAL/Pager/composer.json +++ b/src/SonsOfPHP/Bridge/Doctrine/DBAL/Pager/composer.json @@ -8,6 +8,10 @@ "homepage": "https://github.com/SonsOfPHP/pager-doctrine-dbal", "license": "MIT", "authors": [ + { + "name": "Sons of PHP Community", + "homepage": "https://github.com/SonsOfPHP/sonsofphp/graphs/contributors" + }, { "name": "Joshua Estes", "email": "joshua@sonsofphp.com" diff --git a/src/SonsOfPHP/Bridge/Doctrine/EventSourcing/composer.json b/src/SonsOfPHP/Bridge/Doctrine/EventSourcing/composer.json index f7b20945..06c8ae47 100644 --- a/src/SonsOfPHP/Bridge/Doctrine/EventSourcing/composer.json +++ b/src/SonsOfPHP/Bridge/Doctrine/EventSourcing/composer.json @@ -8,6 +8,10 @@ "homepage": "https://github.com/SonsOfPHP/event-sourcing", "license": "MIT", "authors": [ + { + "name": "Sons of PHP Community", + "homepage": "https://github.com/SonsOfPHP/sonsofphp/graphs/contributors" + }, { "name": "Joshua Estes", "email": "joshua@sonsofphp.com" diff --git a/src/SonsOfPHP/Bridge/Doctrine/ORM/Pager/composer.json b/src/SonsOfPHP/Bridge/Doctrine/ORM/Pager/composer.json index 6564c490..fccc2dee 100644 --- a/src/SonsOfPHP/Bridge/Doctrine/ORM/Pager/composer.json +++ b/src/SonsOfPHP/Bridge/Doctrine/ORM/Pager/composer.json @@ -8,6 +8,10 @@ "homepage": "https://github.com/SonsOfPHP/pager-doctrine-orm", "license": "MIT", "authors": [ + { + "name": "Sons of PHP Community", + "homepage": "https://github.com/SonsOfPHP/sonsofphp/graphs/contributors" + }, { "name": "Joshua Estes", "email": "joshua@sonsofphp.com" diff --git a/src/SonsOfPHP/Bridge/LiipImagine/Filesystem/composer.json b/src/SonsOfPHP/Bridge/LiipImagine/Filesystem/composer.json index ca625487..27699010 100644 --- a/src/SonsOfPHP/Bridge/LiipImagine/Filesystem/composer.json +++ b/src/SonsOfPHP/Bridge/LiipImagine/Filesystem/composer.json @@ -13,6 +13,10 @@ "homepage": "https://github.com/SonsOfPHP/filesystem-liip-imagine", "license": "MIT", "authors": [ + { + "name": "Sons of PHP Community", + "homepage": "https://github.com/SonsOfPHP/sonsofphp/graphs/contributors" + }, { "name": "Joshua Estes", "email": "joshua@sonsofphp.com" diff --git a/src/SonsOfPHP/Bridge/Symfony/Cqrs/composer.json b/src/SonsOfPHP/Bridge/Symfony/Cqrs/composer.json index 5fbb3a48..88e0ccbf 100644 --- a/src/SonsOfPHP/Bridge/Symfony/Cqrs/composer.json +++ b/src/SonsOfPHP/Bridge/Symfony/Cqrs/composer.json @@ -12,6 +12,10 @@ "homepage": "https://github.com/SonsOfPHP/cqrs-symfony", "license": "MIT", "authors": [ + { + "name": "Sons of PHP Community", + "homepage": "https://github.com/SonsOfPHP/sonsofphp/graphs/contributors" + }, { "name": "Joshua Estes", "email": "joshua@sonsofphp.com" diff --git a/src/SonsOfPHP/Bridge/Symfony/EventSourcing/composer.json b/src/SonsOfPHP/Bridge/Symfony/EventSourcing/composer.json index 8eceb2ff..6376cd05 100644 --- a/src/SonsOfPHP/Bridge/Symfony/EventSourcing/composer.json +++ b/src/SonsOfPHP/Bridge/Symfony/EventSourcing/composer.json @@ -8,6 +8,10 @@ "homepage": "https://github.com/SonsOfPHP/event-sourcing-symfony", "license": "MIT", "authors": [ + { + "name": "Sons of PHP Community", + "homepage": "https://github.com/SonsOfPHP/sonsofphp/graphs/contributors" + }, { "name": "Joshua Estes", "email": "joshua@sonsofphp.com" diff --git a/src/SonsOfPHP/Bridge/Twig/Money/composer.json b/src/SonsOfPHP/Bridge/Twig/Money/composer.json index 0ae8d638..373cff8e 100644 --- a/src/SonsOfPHP/Bridge/Twig/Money/composer.json +++ b/src/SonsOfPHP/Bridge/Twig/Money/composer.json @@ -10,6 +10,10 @@ "homepage": "https://github.com/SonsOfPHP/money", "license": "MIT", "authors": [ + { + "name": "Sons of PHP Community", + "homepage": "https://github.com/SonsOfPHP/sonsofphp/graphs/contributors" + }, { "name": "Joshua Estes", "email": "joshua@sonsofphp.com" diff --git a/src/SonsOfPHP/Bundle/FeatureToggleBundle/LICENSE b/src/SonsOfPHP/Bundle/FeatureToggleBundle/LICENSE new file mode 100644 index 00000000..39238382 --- /dev/null +++ b/src/SonsOfPHP/Bundle/FeatureToggleBundle/LICENSE @@ -0,0 +1,19 @@ +Copyright 2022 to Present Joshua Estes + +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/src/SonsOfPHP/Bundle/FeatureToggleBundle/README.md b/src/SonsOfPHP/Bundle/FeatureToggleBundle/README.md new file mode 100644 index 00000000..dc962281 --- /dev/null +++ b/src/SonsOfPHP/Bundle/FeatureToggleBundle/README.md @@ -0,0 +1,23 @@ +
+ +
+
+
+ + + +
+ +# Sons of PHP + +Sons of PHP is builds reusable components and tools using PHP. + +* Documentation can be found at [docs.SonsOfPHP.com][docs] +* Please [Report Issues][issues] and send [Pull Requests][pull-requests] in the [Mother Repository][mother-repo] +* You can get more help by posting questions in the [GitHub Discussions][discussions] + +[mother-repo]: "Sons of PHP Mother Repository" +[discussions]: https://github.com/orgs/SonsOfPHP/discussions +[issues]: https://github.com/SonsOfPHP/sonsofphp/issues +[pull-requests]: https://github.com/SonsOfPHP/sonsofphp/pulls +[docs]: https://docs.sonsofphp.com diff --git a/src/SonsOfPHP/Bundle/FeatureToggleBundle/composer.json b/src/SonsOfPHP/Bundle/FeatureToggleBundle/composer.json new file mode 100644 index 00000000..9ba60a3a --- /dev/null +++ b/src/SonsOfPHP/Bundle/FeatureToggleBundle/composer.json @@ -0,0 +1,56 @@ +{ + "name": "sonsofphp/feature-toggle-bundle", + "type": "symfony-bundle", + "description": "Sons of PHP | Feature Toggle Bundle", + "keywords": [ + "sonsofphp", + "sons of php", + "feature", + "toggle", + "feature toggle", + "symfony" + ], + "homepage": "https://github.com/SonsOfPHP/feature-toggle-bundle", + "license": "MIT", + "authors": [ + { + "name": "Joshua Estes", + "email": "joshua@sonsofphp.com" + } + ], + "support": { + "issues": "https://github.com/SonsOfPHP/sonsofphp/issues", + "forum": "https://github.com/orgs/SonsOfPHP/discussions", + "docs": "https://docs.sonsofphp.com/symfony-bundles/feature-toggle" + }, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/JoshuaEstes" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/subscription/pkg/packagist-sonsofphp-sonsofphp" + } + ], + "require": { + "php": ">=8.2", + "sonsofphp/feature-toggle": "^0.3@dev" + }, + "autoload": { + "psr-4": { + "SonsOfPHP\\Bundle\\FeatureToggleBundle\\": "src/" + } + }, + "autoload-dev": { + "psr-4": { + "SonsOfPHP\\Bundle\\FeatureToggleBundle\\Tests\\": "tests/" + } + }, + "extra": { + "sort-packages": true, + "branch-alias": { + "dev-main": "0.3.x-dev" + } + } +} diff --git a/src/SonsOfPHP/Bundle/FeatureToggleBundle/config/services.yaml b/src/SonsOfPHP/Bundle/FeatureToggleBundle/config/services.yaml new file mode 100644 index 00000000..390a61c8 --- /dev/null +++ b/src/SonsOfPHP/Bundle/FeatureToggleBundle/config/services.yaml @@ -0,0 +1,40 @@ +services: + SonsOfPHP\Bundle\FeatureToggleBundle\Command\DebugCommand: + arguments: ['@sons_of_php.feature_toggle.provider'] + tags: + - { name: 'console.command' } + + SonsOfPHP\Bundle\FeatureToggleBundle\Twig\Extension\FeatureToggleExtension: + tags: + - { name: 'twig.extension' } + + SonsOfPHP\Bundle\FeatureToggleBundle\Twig\Runtime\FeatureToggleExtensionRuntime: + arguments: ['@sons_of_php.feature_toggle.provider'] + tags: + - { name: 'twig.runtime' } + + SonsOfPHP\Component\FeatureToggle\Toggle\AlwaysDisabledToggle: + tags: + - { name: 'sons_of_php.feature_toggle.toggle' } + + sons_of_php.feature_toggle.toggle.disabled: + alias: SonsOfPHP\Component\FeatureToggle\Toggle\AlwaysDisabledToggle + public: true + + SonsOfPHP\Component\FeatureToggle\Toggle\AlwaysEnabledToggle: + tags: + - { name: 'sons_of_php.feature_toggle.toggle' } + + sons_of_php.feature_toggle.toggle.enabled: + alias: SonsOfPHP\Component\FeatureToggle\Toggle\AlwaysEnabledToggle + public: true + + # The provider contains all the different features and their toggles Default + # provider should be a chain provider so that users can define additional + # providers + SonsOfPHP\Contract\FeatureToggle\FeatureToggleProviderInterface: + class: SonsOfPHP\Component\FeatureToggle\Provider\InMemoryFeatureToggleProvider + + sons_of_php.feature_toggle.provider: + alias: SonsOfPHP\Contract\FeatureToggle\FeatureToggleProviderInterface + public: true diff --git a/src/SonsOfPHP/Bundle/FeatureToggleBundle/src/Attribute/AsFeature.php b/src/SonsOfPHP/Bundle/FeatureToggleBundle/src/Attribute/AsFeature.php new file mode 100644 index 00000000..d57c08fb --- /dev/null +++ b/src/SonsOfPHP/Bundle/FeatureToggleBundle/src/Attribute/AsFeature.php @@ -0,0 +1,7 @@ +setName('debug:features') + ->setDescription('Debug feature toggles') + ; + } + + protected function execute(InputInterface $input, OutputInterface $output): int + { + $symfonyStyle = new SymfonyStyle($input, $output); + + $header = ['Key', 'Toggle']; + $rows = []; + $toggle = new \ReflectionProperty(Feature::class, 'toggle'); + foreach ($this->provider->all() as $key => $feature) { + $rows[] = [$key, $toggle->getValue($feature)::class]; + } + + $symfonyStyle->table($header, $rows); + + return Command::SUCCESS; + } +} diff --git a/src/SonsOfPHP/Bundle/FeatureToggleBundle/src/DependencyInjection/Compiler/FeaturePass.php b/src/SonsOfPHP/Bundle/FeatureToggleBundle/src/DependencyInjection/Compiler/FeaturePass.php new file mode 100644 index 00000000..e12a00c9 --- /dev/null +++ b/src/SonsOfPHP/Bundle/FeatureToggleBundle/src/DependencyInjection/Compiler/FeaturePass.php @@ -0,0 +1,26 @@ +has('sons_of_php.feature_toggle.provider')) { + return; + } + + $provider = $container->findDefinition('sons_of_php.feature_toggle.provider'); + $features = $container->findTaggedServiceIds('sons_of_php.feature_toggle.feature'); + + foreach (array_keys($features) as $id) { + $provider->addMethodCall('add', [new Reference($id)]); + } + } +} diff --git a/src/SonsOfPHP/Bundle/FeatureToggleBundle/src/SonsOfPHPFeatureToggleBundle.php b/src/SonsOfPHP/Bundle/FeatureToggleBundle/src/SonsOfPHPFeatureToggleBundle.php new file mode 100644 index 00000000..8eedef3d --- /dev/null +++ b/src/SonsOfPHP/Bundle/FeatureToggleBundle/src/SonsOfPHPFeatureToggleBundle.php @@ -0,0 +1,73 @@ +rootNode()->children() + // @todo + //->scalarNode('provider') + // ->defaultValue('sons_of_php.feature_toggle.provider') + //->end() // provider + ->arrayNode('features') + ->info('Features contains a list of features by "key" and the toggle the feature uses') + ->useAttributeAsKey('key') + ->arrayPrototype() + ->children() + ->scalarNode('toggle') + ->info('Can be "enabled", "disabled", or a service') + ->isRequired() + ->cannotBeEmpty() + ->defaultValue('sons_of_php.feature_toggle.toggle.enabled') + ->end() + ->end() + ->end() + ->end() // features + ->end(); + } + + public function build(ContainerBuilder $container): void + { + $container->registerForAutoconfiguration(AsFeature::class)->addTag('sons_of_php.feature_toggle.feature'); + $container->addCompilerPass(new FeaturePass()); + } + + public function loadExtension(array $config, ContainerConfigurator $container, ContainerBuilder $builder): void + { + $container->import('../config/services.yaml'); + + foreach ($config['features'] as $key => $value) { + $value['toggle'] = match ($value['toggle']) { + 'enabled' => 'sons_of_php.feature_toggle.toggle.enabled', + 'disabled' => 'sons_of_php.feature_toggle.toggle.disabled', + default => $value['toggle'], + }; + + $feature = $container->services()->set('sons_of_php.feature_toggle.feature.' . $key, Feature::class); + $feature->arg(0, $key); + $feature->arg(1, new Reference($value['toggle'])); + $feature->tag('sons_of_php.feature_toggle.feature'); + } + } +} diff --git a/src/SonsOfPHP/Bundle/FeatureToggleBundle/src/Twig/Extension/FeatureToggleExtension.php b/src/SonsOfPHP/Bundle/FeatureToggleBundle/src/Twig/Extension/FeatureToggleExtension.php new file mode 100644 index 00000000..52f290db --- /dev/null +++ b/src/SonsOfPHP/Bundle/FeatureToggleBundle/src/Twig/Extension/FeatureToggleExtension.php @@ -0,0 +1,19 @@ +provider->get($key)->isEnabled(); + } +} diff --git a/src/SonsOfPHP/Bundle/FeatureToggleBundle/tests/.gitignore b/src/SonsOfPHP/Bundle/FeatureToggleBundle/tests/.gitignore new file mode 100644 index 00000000..e69de29b diff --git a/src/SonsOfPHP/Component/Assert/composer.json b/src/SonsOfPHP/Component/Assert/composer.json index 174e1024..25387d75 100644 --- a/src/SonsOfPHP/Component/Assert/composer.json +++ b/src/SonsOfPHP/Component/Assert/composer.json @@ -8,6 +8,10 @@ "homepage": "https://github.com/SonsOfPHP/assert", "license": "MIT", "authors": [ + { + "name": "Sons of PHP Community", + "homepage": "https://github.com/SonsOfPHP/sonsofphp/graphs/contributors" + }, { "name": "Joshua Estes", "email": "joshua@sonsofphp.com" diff --git a/src/SonsOfPHP/Component/Cache/composer.json b/src/SonsOfPHP/Component/Cache/composer.json index 7fb9e02c..0b3b9cff 100644 --- a/src/SonsOfPHP/Component/Cache/composer.json +++ b/src/SonsOfPHP/Component/Cache/composer.json @@ -11,6 +11,10 @@ "homepage": "https://github.com/SonsOfPHP/cache", "license": "MIT", "authors": [ + { + "name": "Sons of PHP Community", + "homepage": "https://github.com/SonsOfPHP/sonsofphp/graphs/contributors" + }, { "name": "Joshua Estes", "email": "joshua@sonsofphp.com" diff --git a/src/SonsOfPHP/Component/Clock/composer.json b/src/SonsOfPHP/Component/Clock/composer.json index 4c675f88..75be26f9 100644 --- a/src/SonsOfPHP/Component/Clock/composer.json +++ b/src/SonsOfPHP/Component/Clock/composer.json @@ -16,6 +16,10 @@ "homepage": "https://github.com/SonsOfPHP/clock", "license": "MIT", "authors": [ + { + "name": "Sons of PHP Community", + "homepage": "https://github.com/SonsOfPHP/sonsofphp/graphs/contributors" + }, { "name": "Joshua Estes", "email": "joshua@sonsofphp.com" diff --git a/src/SonsOfPHP/Component/Container/composer.json b/src/SonsOfPHP/Component/Container/composer.json index e7bb3f49..0b49c857 100644 --- a/src/SonsOfPHP/Component/Container/composer.json +++ b/src/SonsOfPHP/Component/Container/composer.json @@ -10,6 +10,10 @@ "homepage": "https://github.com/SonsOfPHP/container", "license": "MIT", "authors": [ + { + "name": "Sons of PHP Community", + "homepage": "https://github.com/SonsOfPHP/sonsofphp/graphs/contributors" + }, { "name": "Joshua Estes", "email": "joshua@sonsofphp.com" diff --git a/src/SonsOfPHP/Component/Cookie/composer.json b/src/SonsOfPHP/Component/Cookie/composer.json index 5bbe7384..97464bc8 100644 --- a/src/SonsOfPHP/Component/Cookie/composer.json +++ b/src/SonsOfPHP/Component/Cookie/composer.json @@ -8,6 +8,10 @@ "homepage": "https://github.com/SonsOfPHP/cookie", "license": "MIT", "authors": [ + { + "name": "Sons of PHP Community", + "homepage": "https://github.com/SonsOfPHP/sonsofphp/graphs/contributors" + }, { "name": "Joshua Estes", "email": "joshua@sonsofphp.com" diff --git a/src/SonsOfPHP/Component/Cqrs/composer.json b/src/SonsOfPHP/Component/Cqrs/composer.json index ee4625b2..d7e31c04 100644 --- a/src/SonsOfPHP/Component/Cqrs/composer.json +++ b/src/SonsOfPHP/Component/Cqrs/composer.json @@ -12,6 +12,10 @@ "homepage": "https://github.com/SonsOfPHP/cqrs", "license": "MIT", "authors": [ + { + "name": "Sons of PHP Community", + "homepage": "https://github.com/SonsOfPHP/sonsofphp/graphs/contributors" + }, { "name": "Joshua Estes", "email": "joshua@sonsofphp.com" diff --git a/src/SonsOfPHP/Component/EventDispatcher/composer.json b/src/SonsOfPHP/Component/EventDispatcher/composer.json index 221a1bfb..fce147a5 100644 --- a/src/SonsOfPHP/Component/EventDispatcher/composer.json +++ b/src/SonsOfPHP/Component/EventDispatcher/composer.json @@ -9,6 +9,10 @@ "homepage": "https://github.com/SonsOfPHP/event-dispatcher", "license": "MIT", "authors": [ + { + "name": "Sons of PHP Community", + "homepage": "https://github.com/SonsOfPHP/sonsofphp/graphs/contributors" + }, { "name": "Joshua Estes", "email": "joshua@sonsofphp.com" diff --git a/src/SonsOfPHP/Component/EventSourcing/composer.json b/src/SonsOfPHP/Component/EventSourcing/composer.json index 3407f560..18e9a546 100644 --- a/src/SonsOfPHP/Component/EventSourcing/composer.json +++ b/src/SonsOfPHP/Component/EventSourcing/composer.json @@ -8,6 +8,10 @@ "homepage": "https://github.com/SonsOfPHP/event-sourcing", "license": "MIT", "authors": [ + { + "name": "Sons of PHP Community", + "homepage": "https://github.com/SonsOfPHP/sonsofphp/graphs/contributors" + }, { "name": "Joshua Estes", "email": "joshua@sonsofphp.com" diff --git a/src/SonsOfPHP/Component/FeatureToggle/composer.json b/src/SonsOfPHP/Component/FeatureToggle/composer.json index c9665f21..88340cf8 100644 --- a/src/SonsOfPHP/Component/FeatureToggle/composer.json +++ b/src/SonsOfPHP/Component/FeatureToggle/composer.json @@ -14,6 +14,10 @@ "homepage": "https://github.com/SonsOfPHP/feature-toggle", "license": "MIT", "authors": [ + { + "name": "Sons of PHP Community", + "homepage": "https://github.com/SonsOfPHP/sonsofphp/graphs/contributors" + }, { "name": "Joshua Estes", "email": "joshua@sonsofphp.com" diff --git a/src/SonsOfPHP/Component/Filesystem/composer.json b/src/SonsOfPHP/Component/Filesystem/composer.json index 2543bb22..3987ca1e 100644 --- a/src/SonsOfPHP/Component/Filesystem/composer.json +++ b/src/SonsOfPHP/Component/Filesystem/composer.json @@ -10,6 +10,10 @@ "homepage": "https://github.com/SonsOfPHP/filesystem", "license": "MIT", "authors": [ + { + "name": "Sons of PHP Community", + "homepage": "https://github.com/SonsOfPHP/sonsofphp/graphs/contributors" + }, { "name": "Joshua Estes", "email": "joshua@sonsofphp.com" diff --git a/src/SonsOfPHP/Component/HttpFactory/composer.json b/src/SonsOfPHP/Component/HttpFactory/composer.json index 69789822..ebe75d0d 100644 --- a/src/SonsOfPHP/Component/HttpFactory/composer.json +++ b/src/SonsOfPHP/Component/HttpFactory/composer.json @@ -10,6 +10,10 @@ "homepage": "https://github.com/SonsOfPHP/http-factory", "license": "MIT", "authors": [ + { + "name": "Sons of PHP Community", + "homepage": "https://github.com/SonsOfPHP/sonsofphp/graphs/contributors" + }, { "name": "Joshua Estes", "email": "joshua@sonsofphp.com" diff --git a/src/SonsOfPHP/Component/HttpHandler/composer.json b/src/SonsOfPHP/Component/HttpHandler/composer.json index b2034ec7..543dfb3f 100644 --- a/src/SonsOfPHP/Component/HttpHandler/composer.json +++ b/src/SonsOfPHP/Component/HttpHandler/composer.json @@ -10,6 +10,10 @@ "homepage": "https://github.com/SonsOfPHP/http-handler", "license": "MIT", "authors": [ + { + "name": "Sons of PHP Community", + "homepage": "https://github.com/SonsOfPHP/sonsofphp/graphs/contributors" + }, { "name": "Joshua Estes", "email": "joshua@sonsofphp.com" diff --git a/src/SonsOfPHP/Component/HttpMessage/composer.json b/src/SonsOfPHP/Component/HttpMessage/composer.json index b567b6ed..9c146ef2 100644 --- a/src/SonsOfPHP/Component/HttpMessage/composer.json +++ b/src/SonsOfPHP/Component/HttpMessage/composer.json @@ -10,6 +10,10 @@ "homepage": "https://github.com/SonsOfPHP/http-message", "license": "MIT", "authors": [ + { + "name": "Sons of PHP Community", + "homepage": "https://github.com/SonsOfPHP/sonsofphp/graphs/contributors" + }, { "name": "Joshua Estes", "email": "joshua@sonsofphp.com" diff --git a/src/SonsOfPHP/Component/Json/composer.json b/src/SonsOfPHP/Component/Json/composer.json index 34a5cc72..513a8aad 100644 --- a/src/SonsOfPHP/Component/Json/composer.json +++ b/src/SonsOfPHP/Component/Json/composer.json @@ -8,6 +8,10 @@ "homepage": "https://github.com/SonsOfPHP/json", "license": "MIT", "authors": [ + { + "name": "Sons of PHP Community", + "homepage": "https://github.com/SonsOfPHP/sonsofphp/graphs/contributors" + }, { "name": "Joshua Estes", "email": "joshua@sonsofphp.com" diff --git a/src/SonsOfPHP/Component/Link/composer.json b/src/SonsOfPHP/Component/Link/composer.json index a67e2e84..b2ea8986 100644 --- a/src/SonsOfPHP/Component/Link/composer.json +++ b/src/SonsOfPHP/Component/Link/composer.json @@ -10,6 +10,10 @@ "homepage": "https://github.com/SonsOfPHP/link", "license": "MIT", "authors": [ + { + "name": "Sons of PHP Community", + "homepage": "https://github.com/SonsOfPHP/sonsofphp/graphs/contributors" + }, { "name": "Joshua Estes", "email": "joshua@sonsofphp.com" diff --git a/src/SonsOfPHP/Component/Logger/composer.json b/src/SonsOfPHP/Component/Logger/composer.json index 22a0ac23..dad7d27b 100644 --- a/src/SonsOfPHP/Component/Logger/composer.json +++ b/src/SonsOfPHP/Component/Logger/composer.json @@ -10,6 +10,10 @@ "homepage": "https://github.com/SonsOfPHP/logger", "license": "MIT", "authors": [ + { + "name": "Sons of PHP Community", + "homepage": "https://github.com/SonsOfPHP/sonsofphp/graphs/contributors" + }, { "name": "Joshua Estes", "email": "joshua@sonsofphp.com" diff --git a/src/SonsOfPHP/Component/Mailer/composer.json b/src/SonsOfPHP/Component/Mailer/composer.json index 17ead7f4..9120df11 100644 --- a/src/SonsOfPHP/Component/Mailer/composer.json +++ b/src/SonsOfPHP/Component/Mailer/composer.json @@ -8,6 +8,10 @@ "homepage": "https://github.com/SonsOfPHP/mailer", "license": "MIT", "authors": [ + { + "name": "Sons of PHP Community", + "homepage": "https://github.com/SonsOfPHP/sonsofphp/graphs/contributors" + }, { "name": "Joshua Estes", "email": "joshua@sonsofphp.com" diff --git a/src/SonsOfPHP/Component/Money/composer.json b/src/SonsOfPHP/Component/Money/composer.json index 0210f5ef..5ee73e4c 100644 --- a/src/SonsOfPHP/Component/Money/composer.json +++ b/src/SonsOfPHP/Component/Money/composer.json @@ -11,6 +11,10 @@ "homepage": "https://github.com/SonsOfPHP/money", "license": "MIT", "authors": [ + { + "name": "Sons of PHP Community", + "homepage": "https://github.com/SonsOfPHP/sonsofphp/graphs/contributors" + }, { "name": "Joshua Estes", "email": "joshua@sonsofphp.com" diff --git a/src/SonsOfPHP/Component/Pager/composer.json b/src/SonsOfPHP/Component/Pager/composer.json index 1eec4d52..36547d3e 100644 --- a/src/SonsOfPHP/Component/Pager/composer.json +++ b/src/SonsOfPHP/Component/Pager/composer.json @@ -9,6 +9,10 @@ "homepage": "https://github.com/SonsOfPHP/pager", "license": "MIT", "authors": [ + { + "name": "Sons of PHP Community", + "homepage": "https://github.com/SonsOfPHP/sonsofphp/graphs/contributors" + }, { "name": "Joshua Estes", "email": "joshua@sonsofphp.com" diff --git a/src/SonsOfPHP/Component/Registry/composer.json b/src/SonsOfPHP/Component/Registry/composer.json index 9d2fc34d..d1449ad9 100644 --- a/src/SonsOfPHP/Component/Registry/composer.json +++ b/src/SonsOfPHP/Component/Registry/composer.json @@ -9,6 +9,10 @@ "homepage": "https://github.com/SonsOfPHP/registry", "license": "MIT", "authors": [ + { + "name": "Sons of PHP Community", + "homepage": "https://github.com/SonsOfPHP/sonsofphp/graphs/contributors" + }, { "name": "Joshua Estes", "email": "joshua@sonsofphp.com" diff --git a/src/SonsOfPHP/Component/StateMachine/composer.json b/src/SonsOfPHP/Component/StateMachine/composer.json index 595a0eac..5913b5d7 100644 --- a/src/SonsOfPHP/Component/StateMachine/composer.json +++ b/src/SonsOfPHP/Component/StateMachine/composer.json @@ -9,6 +9,10 @@ "homepage": "https://github.com/SonsOfPHP/state-machine", "license": "MIT", "authors": [ + { + "name": "Sons of PHP Community", + "homepage": "https://github.com/SonsOfPHP/sonsofphp/graphs/contributors" + }, { "name": "Joshua Estes", "email": "joshua@sonsofphp.com" diff --git a/src/SonsOfPHP/Component/Version/composer.json b/src/SonsOfPHP/Component/Version/composer.json index 767e40df..5770da03 100644 --- a/src/SonsOfPHP/Component/Version/composer.json +++ b/src/SonsOfPHP/Component/Version/composer.json @@ -9,6 +9,10 @@ "homepage": "https://github.com/SonsOfPHP/version", "license": "MIT", "authors": [ + { + "name": "Sons of PHP Community", + "homepage": "https://github.com/SonsOfPHP/sonsofphp/graphs/contributors" + }, { "name": "Joshua Estes", "email": "joshua@sonsofphp.com" diff --git a/src/SonsOfPHP/Contract/Common/composer.json b/src/SonsOfPHP/Contract/Common/composer.json index 9e87f8b8..0578f55c 100644 --- a/src/SonsOfPHP/Contract/Common/composer.json +++ b/src/SonsOfPHP/Contract/Common/composer.json @@ -13,6 +13,10 @@ "homepage": "https://github.com/SonsOfPHP/common-contract", "license": "MIT", "authors": [ + { + "name": "Sons of PHP Community", + "homepage": "https://github.com/SonsOfPHP/sonsofphp/graphs/contributors" + }, { "name": "Joshua Estes", "email": "joshua@sonsofphp.com" diff --git a/src/SonsOfPHP/Contract/Cookie/composer.json b/src/SonsOfPHP/Contract/Cookie/composer.json index c5308723..245fbe63 100644 --- a/src/SonsOfPHP/Contract/Cookie/composer.json +++ b/src/SonsOfPHP/Contract/Cookie/composer.json @@ -13,6 +13,10 @@ "homepage": "https://github.com/SonsOfPHP/cookie-contract", "license": "MIT", "authors": [ + { + "name": "Sons of PHP Community", + "homepage": "https://github.com/SonsOfPHP/sonsofphp/graphs/contributors" + }, { "name": "Joshua Estes", "email": "joshua@sonsofphp.com" diff --git a/src/SonsOfPHP/Contract/Cqrs/composer.json b/src/SonsOfPHP/Contract/Cqrs/composer.json index e01af0c4..a49e7820 100644 --- a/src/SonsOfPHP/Contract/Cqrs/composer.json +++ b/src/SonsOfPHP/Contract/Cqrs/composer.json @@ -13,6 +13,10 @@ "homepage": "https://github.com/SonsOfPHP/cqrs-contract", "license": "MIT", "authors": [ + { + "name": "Sons of PHP Community", + "homepage": "https://github.com/SonsOfPHP/sonsofphp/graphs/contributors" + }, { "name": "Joshua Estes", "email": "joshua@sonsofphp.com" diff --git a/src/SonsOfPHP/Contract/EventSourcing/composer.json b/src/SonsOfPHP/Contract/EventSourcing/composer.json index 89266cdc..2718a5ef 100644 --- a/src/SonsOfPHP/Contract/EventSourcing/composer.json +++ b/src/SonsOfPHP/Contract/EventSourcing/composer.json @@ -13,6 +13,10 @@ "homepage": "https://github.com/SonsOfPHP/event-sourcing-contract", "license": "MIT", "authors": [ + { + "name": "Sons of PHP Community", + "homepage": "https://github.com/SonsOfPHP/sonsofphp/graphs/contributors" + }, { "name": "Joshua Estes", "email": "joshua@sonsofphp.com" diff --git a/src/SonsOfPHP/Contract/FeatureToggle/FeatureToggleProviderInterface.php b/src/SonsOfPHP/Contract/FeatureToggle/FeatureToggleProviderInterface.php index 1ea0cbbe..465a2798 100644 --- a/src/SonsOfPHP/Contract/FeatureToggle/FeatureToggleProviderInterface.php +++ b/src/SonsOfPHP/Contract/FeatureToggle/FeatureToggleProviderInterface.php @@ -40,7 +40,6 @@ public function get(string $key): FeatureInterface; * When the $key is invalid. MUST support keys consisting of the * characters A-Z, a-z, 0-9, _, and . in any order in UTF-8 encoding and * a length of up to 64 characters - * */ public function has(string $key): bool; diff --git a/src/SonsOfPHP/Contract/FeatureToggle/composer.json b/src/SonsOfPHP/Contract/FeatureToggle/composer.json index 0529784a..b0ee1418 100644 --- a/src/SonsOfPHP/Contract/FeatureToggle/composer.json +++ b/src/SonsOfPHP/Contract/FeatureToggle/composer.json @@ -13,6 +13,10 @@ "homepage": "https://github.com/SonsOfPHP/feature-toggle-contract", "license": "MIT", "authors": [ + { + "name": "Sons of PHP Community", + "homepage": "https://github.com/SonsOfPHP/sonsofphp/graphs/contributors" + }, { "name": "Joshua Estes", "email": "joshua@sonsofphp.com" diff --git a/src/SonsOfPHP/Contract/Filesystem/composer.json b/src/SonsOfPHP/Contract/Filesystem/composer.json index 4f5aac56..d8586b86 100644 --- a/src/SonsOfPHP/Contract/Filesystem/composer.json +++ b/src/SonsOfPHP/Contract/Filesystem/composer.json @@ -13,6 +13,10 @@ "homepage": "https://github.com/SonsOfPHP/filesystem-contract", "license": "MIT", "authors": [ + { + "name": "Sons of PHP Community", + "homepage": "https://github.com/SonsOfPHP/sonsofphp/graphs/contributors" + }, { "name": "Joshua Estes", "email": "joshua@sonsofphp.com" diff --git a/src/SonsOfPHP/Contract/HttpHandler/composer.json b/src/SonsOfPHP/Contract/HttpHandler/composer.json index 34ff58c2..cc08afef 100644 --- a/src/SonsOfPHP/Contract/HttpHandler/composer.json +++ b/src/SonsOfPHP/Contract/HttpHandler/composer.json @@ -13,6 +13,10 @@ "homepage": "https://github.com/SonsOfPHP/http-handler-contract", "license": "MIT", "authors": [ + { + "name": "Sons of PHP Community", + "homepage": "https://github.com/SonsOfPHP/sonsofphp/graphs/contributors" + }, { "name": "Joshua Estes", "email": "joshua@sonsofphp.com" diff --git a/src/SonsOfPHP/Contract/Logger/composer.json b/src/SonsOfPHP/Contract/Logger/composer.json index b8e72497..8cc270a8 100644 --- a/src/SonsOfPHP/Contract/Logger/composer.json +++ b/src/SonsOfPHP/Contract/Logger/composer.json @@ -13,6 +13,10 @@ "homepage": "https://github.com/SonsOfPHP/logger-contract", "license": "MIT", "authors": [ + { + "name": "Sons of PHP Community", + "homepage": "https://github.com/SonsOfPHP/sonsofphp/graphs/contributors" + }, { "name": "Joshua Estes", "email": "joshua@sonsofphp.com" diff --git a/src/SonsOfPHP/Contract/Mailer/composer.json b/src/SonsOfPHP/Contract/Mailer/composer.json index cf094358..2961ff35 100644 --- a/src/SonsOfPHP/Contract/Mailer/composer.json +++ b/src/SonsOfPHP/Contract/Mailer/composer.json @@ -13,6 +13,10 @@ "homepage": "https://github.com/SonsOfPHP/mailer-contract", "license": "MIT", "authors": [ + { + "name": "Sons of PHP Community", + "homepage": "https://github.com/SonsOfPHP/sonsofphp/graphs/contributors" + }, { "name": "Joshua Estes", "email": "joshua@sonsofphp.com" diff --git a/src/SonsOfPHP/Contract/Money/composer.json b/src/SonsOfPHP/Contract/Money/composer.json index 5bc44939..b1c24763 100644 --- a/src/SonsOfPHP/Contract/Money/composer.json +++ b/src/SonsOfPHP/Contract/Money/composer.json @@ -13,6 +13,10 @@ "homepage": "https://github.com/SonsOfPHP/money-contract", "license": "MIT", "authors": [ + { + "name": "Sons of PHP Community", + "homepage": "https://github.com/SonsOfPHP/sonsofphp/graphs/contributors" + }, { "name": "Joshua Estes", "email": "joshua@sonsofphp.com" diff --git a/src/SonsOfPHP/Contract/Pager/composer.json b/src/SonsOfPHP/Contract/Pager/composer.json index 01028cde..771d6dc5 100644 --- a/src/SonsOfPHP/Contract/Pager/composer.json +++ b/src/SonsOfPHP/Contract/Pager/composer.json @@ -13,6 +13,10 @@ "homepage": "https://github.com/SonsOfPHP/pager-contract", "license": "MIT", "authors": [ + { + "name": "Sons of PHP Community", + "homepage": "https://github.com/SonsOfPHP/sonsofphp/graphs/contributors" + }, { "name": "Joshua Estes", "email": "joshua@sonsofphp.com" diff --git a/src/SonsOfPHP/Contract/Registry/composer.json b/src/SonsOfPHP/Contract/Registry/composer.json index 9049e003..bd572265 100644 --- a/src/SonsOfPHP/Contract/Registry/composer.json +++ b/src/SonsOfPHP/Contract/Registry/composer.json @@ -15,6 +15,10 @@ "homepage": "https://github.com/SonsOfPHP/registry-contract", "license": "MIT", "authors": [ + { + "name": "Sons of PHP Community", + "homepage": "https://github.com/SonsOfPHP/sonsofphp/graphs/contributors" + }, { "name": "Joshua Estes", "email": "joshua@sonsofphp.com" diff --git a/src/SonsOfPHP/Contract/StateMachine/composer.json b/src/SonsOfPHP/Contract/StateMachine/composer.json index ed9852a3..d998385f 100644 --- a/src/SonsOfPHP/Contract/StateMachine/composer.json +++ b/src/SonsOfPHP/Contract/StateMachine/composer.json @@ -14,6 +14,10 @@ "homepage": "https://github.com/SonsOfPHP/state-machine-contract", "license": "MIT", "authors": [ + { + "name": "Sons of PHP Community", + "homepage": "https://github.com/SonsOfPHP/sonsofphp/graphs/contributors" + }, { "name": "Joshua Estes", "email": "joshua@sonsofphp.com" diff --git a/src/SonsOfPHP/Contract/Version/composer.json b/src/SonsOfPHP/Contract/Version/composer.json index c7e15b0e..5b1b3a85 100644 --- a/src/SonsOfPHP/Contract/Version/composer.json +++ b/src/SonsOfPHP/Contract/Version/composer.json @@ -13,6 +13,10 @@ "homepage": "https://github.com/SonsOfPHP/version-contract", "license": "MIT", "authors": [ + { + "name": "Sons of PHP Community", + "homepage": "https://github.com/SonsOfPHP/sonsofphp/graphs/contributors" + }, { "name": "Joshua Estes", "email": "joshua@sonsofphp.com"