diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 0000000..26fa993 --- /dev/null +++ b/.editorconfig @@ -0,0 +1,18 @@ +; This file is for unifying the coding style for different editors and IDEs. +; More information at http://editorconfig.org + +root = true + +[*] +charset = utf-8 +end_of_line = lf +insert_final_newline = true +indent_style = space +indent_size = 4 +trim_trailing_whitespace = true + +[*.md] +trim_trailing_whitespace = false + +[*.yml] +indent_size = 2 \ No newline at end of file diff --git a/.gitattributes b/.gitattributes index ea90488..b97feb9 100644 --- a/.gitattributes +++ b/.gitattributes @@ -8,3 +8,4 @@ /phpunit.xml.dist export-ignore /.travis.yml export-ignore /media export-ignore +/data.json export-ignore diff --git a/.gitignore b/.gitignore index 6ac4dde..acebd61 100755 --- a/.gitignore +++ b/.gitignore @@ -6,4 +6,5 @@ composer.lock index.php products.json src/JsonBuilder.php -data.json \ No newline at end of file +data.json +examples diff --git a/.phpunit.cache/test-results b/.phpunit.cache/test-results new file mode 100644 index 0000000..4d53666 --- /dev/null +++ b/.phpunit.cache/test-results @@ -0,0 +1 @@ +{"version":"pest_2.36.0","defects":{"P\\Tests\\Clause::__pest_evaluable_it_may_create_Clause_class_object":8,"P\\Tests\\Clause::__pest_evaluable_it_fresh____works":8,"P\\Tests\\Clause::__pest_evaluable_it_collect____works":8,"P\\Tests\\QueryEngineTest::__pest_evaluable__transform____\u2192_it_can_transform_the_data_with_a_callable_function":7},"times":{"P\\Tests\\Clause::__pest_evaluable_it_may_create_Clause_class_object":0.035,"P\\Tests\\Clause::__pest_evaluable_it_fresh____works":0.001,"P\\Tests\\Clause::__pest_evaluable_it_collect____works":0,"P\\Tests\\ClauseTest::__pest_evaluable_it_may_create_Clause_class_object":0.02,"P\\Tests\\ClauseTest::__pest_evaluable_it_fresh____works":0.001,"P\\Tests\\ClauseTest::__pest_evaluable_it_collect____works":0.004,"P\\Tests\\QueryEngineTest::__pest_evaluable_it_can_create_a_deep_copy_of_the_QueryEngine_instance":0.05,"P\\Tests\\QueryEngineTest::__pest_evaluable_it_can_make_string_representation_of_the_QueryEngine_instance":0.002,"P\\Tests\\QueryEngineTest::__pest_evaluable_it_can_____set_the_data_of_the_QueryEngine_instance":0,"P\\Tests\\QueryEngineTest::__pest_evaluable_it_can_____set_and_____get_the_data_of_the_QueryEngine_instance":0,"P\\Tests\\QueryEngineTest::__pest_evaluable_it_can_____invoke_the_QueryEngine_instance":0.001,"P\\Tests\\QueryEngineTest::__pest_evaluable_it_at___can_get_the_value_of_the_given_key":0,"P\\Tests\\QueryEngineTest::__pest_evaluable_it_at___can_get_the_value_from_the_nested_node":0,"P\\Tests\\QueryEngineTest::__pest_evaluable_it_can_get___the_value_of_the_given_query":0.001,"P\\Tests\\QueryEngineTest::__pest_evaluable_it_can_get___the_value_of_the_query_result":0.001,"P\\Tests\\QueryEngineTest::__pest_evaluable_it_can_get___the_value_of_the_query_result_with_the_given_properties":0.001,"P\\Tests\\QueryEngineTest::__pest_evaluable_it_can_raw___get_the_raw_data_from_the_query":0.001,"P\\Tests\\QueryEngineTest::__pest_evaluable_it_can_raw___get_the_raw_data_from_the_query_with_the_given_column":0.001,"P\\Tests\\QueryEngineTest::__pest_evaluable_it_can_exists___check_the_data_existence":0.001,"P\\Tests\\QueryEngineTest::__pest_evaluable_it_can_reset_current_instance_with_original_data":0.001,"P\\Tests\\QueryEngineTest::__pest_evaluable_it_can_reset_current_instance_with_new_data":0.001,"P\\Tests\\QueryEngineTest::__pest_evaluable_it_can_reset_current_instance_with_new_instance":0.001,"P\\Tests\\QueryEngineTest::__pest_evaluable__reset____\u2192_it_can_reset_current_instance_with_original_data":0.001,"P\\Tests\\QueryEngineTest::__pest_evaluable__reset____\u2192_it_can_reset_current_instance_with_new_data":0,"P\\Tests\\QueryEngineTest::__pest_evaluable__reset____\u2192_it_can_reset_current_instance_with_new_instance":0,"P\\Tests\\QueryEngineTest::__pest_evaluable__reset____\u2192_it_can_reset_current_instance_with_modifying_props":0.001,"P\\Tests\\QueryEngineTest::__pest_evaluable__reset____\u2192_it_can_reset_current_instance_with_modifying_props_and_new_instance":0,"P\\Tests\\QueryEngineTest::__pest_evaluable__groupBy____\u2192_it_can_groupBy_the_data_with_specific_property":0,"P\\Tests\\QueryEngineTest::__pest_evaluable_it_can_groupBy_the_data_with_specific_property":0,"P\\Tests\\QueryEngineTest::__pest_evaluable_it_can_countGroupBy_the_data_with_specific_property":0,"P\\Tests\\QueryEngineTest::__pest_evaluable_it_can_distinct_the_data_with_specific_property":0.001,"P\\Tests\\QueryEngineTest::__pest_evaluable__count____\u2192_it_can_count_the_data":0,"P\\Tests\\QueryEngineTest::__pest_evaluable__count____\u2192_it_can_count_the_data_with_query_results":0,"P\\Tests\\QueryEngineTest::__pest_evaluable__sum____\u2192_it_can_sum_the_collection_data":0,"P\\Tests\\QueryEngineTest::__pest_evaluable__sum____\u2192_it_can_sum_the_collection_data_of_querying_resutls":0,"P\\Tests\\QueryEngineTest::__pest_evaluable__sum____\u2192_it_can_sum_the_sets_of_value":0,"P\\Tests\\QueryEngineTest::__pest_evaluable__sum____\u2192_it_can_not_sum_non_collection_value_with_given_key":0,"P\\Tests\\QueryEngineTest::__pest_evaluable__sum____\u2192_it_can_not_sum_collection_value_without_any_given_key":0.001,"P\\Tests\\QueryEngineTest::__pest_evaluable__sum____\u2192_it_can_not_sum_collection_of_value_without_any_given_key":0,"P\\Tests\\QueryEngineTest::__pest_evaluable__max____\u2192_it_can_max___the_collection_data":0,"P\\Tests\\QueryEngineTest::__pest_evaluable__max____\u2192_it_can_max___the_collection_data_of_querying_results":0.001,"P\\Tests\\QueryEngineTest::__pest_evaluable__max____\u2192_it_can_max___the_sets_of_value":0,"P\\Tests\\QueryEngineTest::__pest_evaluable__max____\u2192_it_can_not_max___non_collection_value_with_given_key":0,"P\\Tests\\QueryEngineTest::__pest_evaluable__max____\u2192_it_can_not_max___collection_of_value_without_any_given_key":0,"P\\Tests\\QueryEngineTest::__pest_evaluable__min____\u2192_it_can_min___the_collection_data":0,"P\\Tests\\QueryEngineTest::__pest_evaluable__min____\u2192_it_can_min___the_collection_data_of_querying_results":0.001,"P\\Tests\\QueryEngineTest::__pest_evaluable__min____\u2192_it_can_min___the_sets_of_value":0,"P\\Tests\\QueryEngineTest::__pest_evaluable__min____\u2192_it_can_not_min___non_collection_value_with_given_key":0,"P\\Tests\\QueryEngineTest::__pest_evaluable__min____\u2192_it_can_not_min___collection_of_value_without_any_given_key":0,"P\\Tests\\QueryEngineTest::__pest_evaluable__avg____\u2192_it_can_avg___the_collection_data":0,"P\\Tests\\QueryEngineTest::__pest_evaluable__avg____\u2192_it_can_avg___the_collection_data_of_querying_results":0.001,"P\\Tests\\QueryEngineTest::__pest_evaluable__avg____\u2192_it_can_avg___the_sets_of_value":0,"P\\Tests\\QueryEngineTest::__pest_evaluable__avg____\u2192_it_can_not_avg___non_collection_value_with_given_key":0,"P\\Tests\\QueryEngineTest::__pest_evaluable__avg____\u2192_it_can_not_avg___collection_of_value_without_any_given_key":0.001,"P\\Tests\\QueryEngineTest::__pest_evaluable__first____\u2192_it_can_first___fetch_the_first_row_of_the_collection_data":0.001,"P\\Tests\\QueryEngineTest::__pest_evaluable__first____\u2192_it_can_first___fetch_the_first_row_of_the_collection_data_with_query_results":0.001,"P\\Tests\\QueryEngineTest::__pest_evaluable__first____\u2192_it_can_first___fetch_the_first_row_of_the_collection_data_with_query_results_and_specific_columns":0.001,"P\\Tests\\QueryEngineTest::__pest_evaluable__last____\u2192_it_can_last___fetch_the_last_row_of_the_collection_data":0.001,"P\\Tests\\QueryEngineTest::__pest_evaluable__last____\u2192_it_can_last___fetch_the_last_row_of_the_collection_data_with_query_results":0.001,"P\\Tests\\QueryEngineTest::__pest_evaluable__last____\u2192_it_can_last___fetch_the_last_row_of_the_collection_data_with_query_results_and_specific_columns":0.001,"P\\Tests\\QueryEngineTest::__pest_evaluable__nth____\u2192_it_can_nth___fetch_the_nth_position_of_row_from_the_collection_data":0.001,"P\\Tests\\QueryEngineTest::__pest_evaluable__nth____\u2192_it_can_nth___fetch_the_nth_position_of_row_from_the_collection_data_with_query_results":0.001,"P\\Tests\\QueryEngineTest::__pest_evaluable__nth____\u2192_it_can_nth___fetch_the_last_nth_position_of_the_collection_data_with_query_results_and_specific_columns":0.003,"P\\Tests\\QueryEngineTest::__pest_evaluable__nth____\u2192_it_can_nth___fetch_the_null_value_from_the_position_which_is_greater_than_total_items":0.001,"P\\Tests\\QueryEngineTest::__pest_evaluable__sortBy__\u2192_it_can_sortBy_the_collection_data_with_specific_property":0.004,"P\\Tests\\QueryEngineTest::__pest_evaluable_it_can_sortBy_the_collection_data_with_specific_property":0.003,"P\\Tests\\QueryEngineTest::__pest_evaluable_it_can_sort_the_data":0.002,"P\\Tests\\QueryEngineTest::__pest_evaluable_it_can_sort___the_data":0.004,"P\\Tests\\QueryEngineTest::__pest_evaluable_it_can_grab___the_raw_resultant_data":0.001,"P\\Tests\\QueryEngineTest::__pest_evaluable_it_can_each___iterate_over_all_items_in_the_collection":0.001,"P\\Tests\\QueryEngineTest::__pest_evaluable__each____\u2192_it_can_each___iterate_over_all_items_in_the_collection":0.001,"P\\Tests\\QueryEngineTest::__pest_evaluable__each____\u2192_it_can_each___handle_an_empty_collection":0.001,"P\\Tests\\QueryEngineTest::__pest_evaluable__transform____\u2192_it_can_transform_the_data_with_a_callable_function":0.006,"P\\Tests\\QueryEngineTest::__pest_evaluable_it_can_transform_the_data_with_a_callable_function":0,"P\\Tests\\QueryEngineTest::__pest_evaluable_it_can_transform___the_data_with_a_callable_function":0,"P\\Tests\\QueryEngineTest::__pest_evaluable_it_can_map___the_data_with_a_callable_function":0.001,"P\\Tests\\QueryEngineTest::__pest_evaluable__filter____\u2192_it_can_filter___the_data_with_a_callable_function":0.001,"P\\Tests\\QueryEngineTest::__pest_evaluable__filter____\u2192_it_can_filter___the_data_with_a_callable_function_and_keep_indexes":0.001,"P\\Tests\\QueryEngineTest::__pest_evaluable__implode____\u2192_it_can_implode___from_collection_data_by_given_key_as_string":0.001,"P\\Tests\\QueryEngineTest::__pest_evaluable__implode____\u2192_it_can_implode___from_collection_data_by_given_keys_as_array":0.001,"P\\Tests\\QueryEngineTest::__pest_evaluable_it_can_column___get_specific_key_s_value_from_collection":0.001,"P\\Tests\\QueryEngineTest::__pest_evaluable__column____\u2192_it_can_column___get_specific_key_s_value_from_collection":0.001,"P\\Tests\\QueryEngineTest::__pest_evaluable__column____\u2192_it_can_column___get_specific_key_s_value_from_collection_using_given_key":0.001,"P\\Tests\\QueryEngineTest::__pest_evaluable_it_can_toJson___of_the_collection_data":0.001,"P\\Tests\\QueryEngineTest::__pest_evaluable_it_can_toArray___of_the_collection_data":0.001,"P\\Tests\\QueryEngineTest::__pest_evaluable_it_can_get_all_keys___from_the_collection_data":0.001,"P\\Tests\\QueryEngineTest::__pest_evaluable_it_can_get_all_values___from_the_collection_data":0.001,"P\\Tests\\QueryEngineTest::__pest_evaluable__chunk____\u2192_it_can_chunk___the_collection_data_by_given_amount":0.001,"P\\Tests\\QueryEngineTest::__pest_evaluable__chunk____\u2192_it_can_chunk___the_collection_data_by_given_amount_and_process_it_with_callback":0.001,"P\\Tests\\QueryEngineTest::__pest_evaluable_it_can_pop___the_first_elements_from_collection":0.001,"P\\Tests\\QueryEngineTest::__pest_evaluable_it_can_shift___the_first_elements_from_collection":0.001,"P\\Tests\\QueryEngineTest::__pest_evaluable_it_can_push___the_elements_to_the_collection":0.001,"P\\Tests\\ClauseTest::__pest_evaluable_where_any":0.02,"P\\Tests\\ClauseTest::__pest_evaluable_reset_props":0.001,"P\\Tests\\ClauseTest::__pest_evaluable_take_column":0,"P\\Tests\\ClauseTest::__pest_evaluable_where_starts_with":0,"P\\Tests\\ClauseTest::__pest_evaluable_where_in_array":0,"P\\Tests\\ClauseTest::__pest_evaluable_or_where":0,"P\\Tests\\ClauseTest::__pest_evaluable_where_null":0,"P\\Tests\\ClauseTest::__pest_evaluable_reset":0.001,"P\\Tests\\ClauseTest::__pest_evaluable_where_contains":0.001,"P\\Tests\\ClauseTest::__pest_evaluable_from":0.001,"P\\Tests\\ClauseTest::__pest_evaluable_collect":0,"P\\Tests\\ClauseTest::__pest_evaluable_where_data_type":0,"P\\Tests\\ClauseTest::__pest_evaluable_callable_where":0,"P\\Tests\\ClauseTest::__pest_evaluable_where_bool":0,"P\\Tests\\ClauseTest::__pest_evaluable_where_not_exists":0.001,"P\\Tests\\ClauseTest::__pest_evaluable_get_traveler":0,"P\\Tests\\ClauseTest::__pest_evaluable_re_process":0,"P\\Tests\\ClauseTest::__pest_evaluable_where_count":0.001,"P\\Tests\\ClauseTest::__pest_evaluable_or_callable_where":0.001,"P\\Tests\\ClauseTest::__pest_evaluable_where_like":0,"P\\Tests\\ClauseTest::__pest_evaluable_set_traveler":0,"P\\Tests\\ClauseTest::__pest_evaluable_where_in":0,"P\\Tests\\ClauseTest::__pest_evaluable_where_match":0,"P\\Tests\\ClauseTest::__pest_evaluable_where_exists":0,"P\\Tests\\ClauseTest::__pest_evaluable_where":0,"P\\Tests\\ClauseTest::__pest_evaluable_construct":0.001,"P\\Tests\\ClauseTest::__pest_evaluable_where_not_in_array":0,"P\\Tests\\ClauseTest::__pest_evaluable_where_instance":0.001,"P\\Tests\\ClauseTest::__pest_evaluable_take":0,"P\\Tests\\ClauseTest::__pest_evaluable_where_not_null":0,"P\\Tests\\ClauseTest::__pest_evaluable_macro":0,"P\\Tests\\ClauseTest::__pest_evaluable_select":0,"P\\Tests\\ClauseTest::__pest_evaluable_offset":0,"P\\Tests\\ClauseTest::__pest_evaluable_where_date":0,"P\\Tests\\ClauseTest::__pest_evaluable_except":0,"P\\Tests\\ClauseTest::__pest_evaluable_where_ends_with":0,"P\\Tests\\ClauseTest::__pest_evaluable_where_not_in":0}} \ No newline at end of file diff --git a/composer.json b/composer.json index 477ef78..4212c94 100644 --- a/composer.json +++ b/composer.json @@ -1,6 +1,6 @@ { "name": "nahid/qarray", - "description": "QArray is a PHP abstraction for querying array", + "description": "QArray is a Query Builder for PHP array", "keywords": ["array", "query", "php"], "homepage": "https://github.com/nahid/qarray", "type": "library", @@ -13,12 +13,17 @@ ], "require": { "php": ">=8.1", - "myclabs/deep-copy": "^1.8", - "ext-json": "*" + "myclabs/deep-copy": "^1.11", + "ext-json": "*", + "nikic/php-parser": "^5.3" }, "require-dev": { - "phpunit/phpunit": "^5.0 || ^6.0 || ^7.1", - "symfony/var-dumper": "^6.3" + "phpunit/phpunit": ">=8.1", + "symfony/var-dumper": "^6.2", + "pestphp/pest": "^2.6.1", + "pestphp/pest-plugin-arch": "^2.1.2", + "phpstan/phpstan": "^1.10.15", + "mockery/mockery": "^1.6" }, "autoload": { "psr-4": { @@ -34,5 +39,15 @@ } }, "minimum-stability": "dev", - "prefer-stable": true + "prefer-stable": true, + "config": { + "allow-plugins": { + "pestphp/pest-plugin": true + } + }, + "scripts": { + "test": "./vendor/bin/pest", + "phpstan": "phpstan analyse src --level=7", + "phpstan-tests": "phpstan analyse tests --level=7" + } } diff --git a/data.json b/data.json deleted file mode 100644 index 132d3e1..0000000 --- a/data.json +++ /dev/null @@ -1,10724 +0,0 @@ -{ - "_readme": [ - "This file locks the dependencies of your project to a known state", - "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", - "This file is @generated automatically" - ], - "content-hash": "f230e202d119622afe1dec2fcbda932a", - "packages": [ - { - "name": "algolia/algoliasearch-client-php", - "version": "2.4.0", - "source": { - "type": "git", - "url": "https://github.com/algolia/algoliasearch-client-php.git", - "reference": "602748161cecbf9d329379a9949d63e1dc683852" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/algolia/algoliasearch-client-php/zipball/602748161cecbf9d329379a9949d63e1dc683852", - "reference": "602748161cecbf9d329379a9949d63e1dc683852", - "shasum": "" - }, - "require": { - "ext-curl": "*", - "ext-json": "*", - "ext-mbstring": "*", - "php": "^5.3 || ^7.0", - "psr/http-message": "^1.0", - "psr/log": "^1.0", - "psr/simple-cache": "^1.0" - }, - "require-dev": { - "friendsofphp/php-cs-fixer": "^2.0", - "fzaninotto/faker": "^1.8", - "phpunit/phpunit": "^4.8", - "symfony/yaml": "^2.0 || ^4.0" - }, - "suggest": { - "guzzlehttp/guzzle": "If you prefer to use Guzzle HTTP client instead of the Http Client implementation provided by the package" - }, - "bin": [ - "bin/algolia-doctor" - ], - "type": "library", - "extra": { - "branch-alias": { - "dev-2.0": "2.0.x-dev" - } - }, - "autoload": { - "psr-4": { - "Algolia\\AlgoliaSearch\\": "src/" - }, - "files": [ - "src/Http/Psr7/functions.php", - "src/functions.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Algolia Team", - "email": "contact@algolia.com" - } - ], - "description": "Algolia Search API Client for PHP", - "keywords": [ - "algolia", - "api", - "client", - "php", - "search" - ], - "time": "2019-09-11T15:21:08+00:00" - }, - { - "name": "algolia/scout-extended", - "version": "v1.8.0", - "source": { - "type": "git", - "url": "https://github.com/algolia/scout-extended.git", - "reference": "ea5cec58af8f726fe1f5848082c0a5f84ffbd3b8" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/algolia/scout-extended/zipball/ea5cec58af8f726fe1f5848082c0a5f84ffbd3b8", - "reference": "ea5cec58af8f726fe1f5848082c0a5f84ffbd3b8", - "shasum": "" - }, - "require": { - "algolia/algoliasearch-client-php": "^2.0", - "ext-json": "*", - "illuminate/console": "5.6.*|5.7.*|5.8.*|^6.0", - "illuminate/contracts": "5.6.*|5.7.*|5.8.*|^6.0", - "illuminate/database": "5.6.*|5.7.*|5.8.*|^6.0", - "illuminate/filesystem": "5.6.*|5.7.*|5.8.*|^6.0", - "illuminate/support": "5.6.*|5.7.*|5.8.*|^6.0", - "laravel/scout": "^6.1.1|^7.0", - "php": "^7.1.3", - "riimu/kit-phpencoder": "^2.3" - }, - "require-dev": { - "fzaninotto/faker": "^1.8", - "mockery/mockery": "^1.1", - "nunomaduro/larastan": "^0.4", - "orchestra/testbench": "^3.0", - "phpstan/phpstan": "^0.11", - "phpunit/phpunit": "^7.0|^8.0" - }, - "suggest": { - "ext-dom": "Required to use the HTML Splitter." - }, - "type": "library", - "extra": { - "laravel": { - "providers": [ - "Algolia\\ScoutExtended\\ScoutExtendedServiceProvider" - ] - } - }, - "autoload": { - "psr-4": { - "Algolia\\ScoutExtended\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nuno Maduro", - "email": "enunomaduro@gmail.com" - }, - { - "name": "Algolia Team", - "email": "contact@algolia.com" - } - ], - "description": "Scout Extended extends Laravel Scout adding algolia-specific features", - "keywords": [ - "algolia", - "analytics", - "extended", - "laravel", - "places", - "scout", - "search" - ], - "time": "2019-10-14T11:00:44+00:00" - }, - { - "name": "almasaeed2010/adminlte", - "version": "v2.3.11", - "source": { - "type": "git", - "url": "https://github.com/ColorlibHQ/AdminLTE.git", - "reference": "2be703222af2edcb87e562d3da2299e4352bff8a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/ColorlibHQ/AdminLTE/zipball/2be703222af2edcb87e562d3da2299e4352bff8a", - "reference": "2be703222af2edcb87e562d3da2299e4352bff8a", - "shasum": "" - }, - "type": "library", - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Abdullah Almsaeed", - "email": "abdullah@almsaeedstudio.com" - } - ], - "description": "AdminLTE - admin control panel and dashboard that's based on Bootstrap 3", - "homepage": "http://almsaeedstudio.com/", - "keywords": [ - "JS", - "admin", - "back-end", - "css", - "less", - "responsive", - "template", - "theme", - "web" - ], - "time": "2017-01-08T21:03:57+00:00" - }, - { - "name": "asm89/stack-cors", - "version": "1.2.0", - "source": { - "type": "git", - "url": "https://github.com/asm89/stack-cors.git", - "reference": "c163e2b614550aedcf71165db2473d936abbced6" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/asm89/stack-cors/zipball/c163e2b614550aedcf71165db2473d936abbced6", - "reference": "c163e2b614550aedcf71165db2473d936abbced6", - "shasum": "" - }, - "require": { - "php": ">=5.5.9", - "symfony/http-foundation": "~2.7|~3.0|~4.0", - "symfony/http-kernel": "~2.7|~3.0|~4.0" - }, - "require-dev": { - "phpunit/phpunit": "^5.0 || ^4.8.10", - "squizlabs/php_codesniffer": "^2.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.2-dev" - } - }, - "autoload": { - "psr-4": { - "Asm89\\Stack\\": "src/Asm89/Stack/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Alexander", - "email": "iam.asm89@gmail.com" - } - ], - "description": "Cross-origin resource sharing library and stack middleware", - "homepage": "https://github.com/asm89/stack-cors", - "keywords": [ - "cors", - "stack" - ], - "time": "2017-12-20T14:37:45+00:00" - }, - { - "name": "backpack/base", - "version": "0.8.9", - "source": { - "type": "git", - "url": "https://github.com/Laravel-Backpack/Base.git", - "reference": "12dd0611a33bcfb229bd776922ac40f423a3ed79" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/Laravel-Backpack/Base/zipball/12dd0611a33bcfb229bd776922ac40f423a3ed79", - "reference": "12dd0611a33bcfb229bd776922ac40f423a3ed79", - "shasum": "" - }, - "require": { - "almasaeed2010/adminlte": "2.3.*", - "creativeorange/gravatar": "~1.0", - "jenssegers/date": "^3.2", - "laravel/framework": "5.5.*|5.6.*", - "prologue/alerts": "^0.4.1" - }, - "require-dev": { - "backpack/generators": "^1.1", - "laracasts/generators": "^1.1", - "phpunit/phpunit": "~6.0", - "scrutinizer/ocular": "~1.1", - "squizlabs/php_codesniffer": "~2.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0-dev" - }, - "laravel": { - "providers": [ - "Backpack\\Base\\BaseServiceProvider" - ] - } - }, - "autoload": { - "psr-4": { - "Backpack\\Base\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "proprietary" - ], - "authors": [ - { - "name": "Cristian Tabacitu", - "email": "hello@tabacitu.ro", - "homepage": "http://www.tabacitu.ro", - "role": "Chief Architect & Developer" - } - ], - "description": "Laravel Backpack's base package, which offers admin authentication and a blank admin panel using AdminLTE", - "homepage": "https://github.com/laravel-backpack/base", - "keywords": [ - "backpack", - "base" - ], - "time": "2018-02-07T21:20:53+00:00" - }, - { - "name": "backpack/crud", - "version": "3.3.17", - "source": { - "type": "git", - "url": "https://github.com/Laravel-Backpack/CRUD.git", - "reference": "dade164f74d34943ac935f0af98c5da546a7a8c4" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/Laravel-Backpack/CRUD/zipball/dade164f74d34943ac935f0af98c5da546a7a8c4", - "reference": "dade164f74d34943ac935f0af98c5da546a7a8c4", - "shasum": "" - }, - "require": { - "backpack/base": "^0.8.0", - "barryvdh/laravel-elfinder": "^0.3.10", - "doctrine/dbal": "^2.5", - "intervention/image": "^2.3", - "venturecraft/revisionable": "1.*" - }, - "require-dev": { - "orchestra/database": "~3.4", - "orchestra/testbench": "~3.0", - "phpunit/phpunit": "~6.0", - "scrutinizer/ocular": "~1.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0-dev" - }, - "laravel": { - "providers": [ - "Backpack\\CRUD\\CrudServiceProvider" - ], - "aliases": { - "CRUD": "Backpack\\CRUD\\CrudServiceProvider" - } - } - }, - "autoload": { - "psr-4": { - "Backpack\\CRUD\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Cristian Tabacitu", - "email": "hello@tabacitu.ro", - "homepage": "http://www.tabacitu.ro", - "role": "Chief Architect & Lead Developer" - } - ], - "description": "Quickly build an admin interface for your Eloquent models, using Laravel 5. Build a CMS in a matter of minutes.", - "homepage": "https://github.com/laravel-backpack/CRUD", - "keywords": [ - "Admin Interface", - "Content management system", - "admin panel", - "cms", - "content management framework", - "create", - "crud", - "delete", - "read", - "update" - ], - "time": "2018-03-21T17:06:28+00:00" - }, - { - "name": "barryvdh/elfinder-flysystem-driver", - "version": "v0.2.1", - "source": { - "type": "git", - "url": "https://github.com/barryvdh/elfinder-flysystem-driver.git", - "reference": "1f323056495fdce019b6ef1621be697f2945c609" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/barryvdh/elfinder-flysystem-driver/zipball/1f323056495fdce019b6ef1621be697f2945c609", - "reference": "1f323056495fdce019b6ef1621be697f2945c609", - "shasum": "" - }, - "require": { - "intervention/image": "^2.0", - "league/flysystem": "^1.0", - "league/flysystem-cached-adapter": "^1.0", - "php": ">=5.4", - "studio-42/elfinder": "^2.1.10" - }, - "suggest": { - "league/glide": "1.x to display images through Glide" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "0.2-dev" - } - }, - "autoload": { - "classmap": [ - "elFinderVolumeFlysystem.php" - ], - "psr-4": { - "Barryvdh\\elFinderFlysystemDriver\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Barry vd. Heuvel", - "email": "barryvdh@gmail.com" - } - ], - "description": "A Flysystem Driver for elFinder", - "keywords": [ - "Flysystem", - "elfinder", - "filesystem" - ], - "time": "2017-07-08T17:59:38+00:00" - }, - { - "name": "barryvdh/laravel-cors", - "version": "v0.11.2", - "source": { - "type": "git", - "url": "https://github.com/barryvdh/laravel-cors.git", - "reference": "7969a52f52d0d9a04b42565d25ac9994b8c83332" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/barryvdh/laravel-cors/zipball/7969a52f52d0d9a04b42565d25ac9994b8c83332", - "reference": "7969a52f52d0d9a04b42565d25ac9994b8c83332", - "shasum": "" - }, - "require": { - "asm89/stack-cors": "^1.2", - "illuminate/support": "5.5.x|5.6.x|5.7.x", - "php": ">=7", - "symfony/http-foundation": "^3.1|^4", - "symfony/http-kernel": "^3.1|^4" - }, - "require-dev": { - "laravel/framework": "^5.5", - "orchestra/testbench": "3.3.x|3.4.x|3.5.x|3.6.x|3.7.x", - "phpunit/phpunit": "^4.8|^5.2|^7.0", - "squizlabs/php_codesniffer": "^2.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "0.11-dev" - }, - "laravel": { - "providers": [ - "Barryvdh\\Cors\\ServiceProvider" - ] - } - }, - "autoload": { - "psr-4": { - "Barryvdh\\Cors\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Barry vd. Heuvel", - "email": "barryvdh@gmail.com" - } - ], - "description": "Adds CORS (Cross-Origin Resource Sharing) headers support in your Laravel application", - "keywords": [ - "api", - "cors", - "crossdomain", - "laravel" - ], - "time": "2018-09-06T13:20:53+00:00" - }, - { - "name": "barryvdh/laravel-elfinder", - "version": "v0.3.12", - "source": { - "type": "git", - "url": "https://github.com/barryvdh/laravel-elfinder.git", - "reference": "05e17d6dd41b4cc860a555c320bb108fdef09a44" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/barryvdh/laravel-elfinder/zipball/05e17d6dd41b4cc860a555c320bb108fdef09a44", - "reference": "05e17d6dd41b4cc860a555c320bb108fdef09a44", - "shasum": "" - }, - "require": { - "barryvdh/elfinder-flysystem-driver": "^0.1.4|^0.2", - "illuminate/support": "5.0.x|5.1.x|5.2.x|5.3.x|5.4.x|5.5.x|5.6.x", - "league/flysystem": "^1.0", - "league/flysystem-cached-adapter": "^1.0", - "php": ">=5.4.0", - "studio-42/elfinder": "~2.1.10" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "0.3-dev" - }, - "laravel": { - "providers": [ - "Barryvdh\\Elfinder\\ElfinderServiceProvider" - ] - } - }, - "autoload": { - "psr-4": { - "Barryvdh\\Elfinder\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Barry vd. Heuvel", - "email": "barryvdh@gmail.com" - } - ], - "description": "A Laravel Package to integrate elFinder 2", - "keywords": [ - "elfinder", - "filebrowser", - "laravel", - "tinymce" - ], - "time": "2018-02-08T07:54:10+00:00" - }, - { - "name": "brozot/laravel-fcm", - "version": "1.3.1", - "source": { - "type": "git", - "url": "https://github.com/brozot/Laravel-FCM.git", - "reference": "1b5c64c5ea829f46c7e5f274971c587a8c3f0668" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/brozot/Laravel-FCM/zipball/1b5c64c5ea829f46c7e5f274971c587a8c3f0668", - "reference": "1b5c64c5ea829f46c7e5f274971c587a8c3f0668", - "shasum": "" - }, - "require": { - "guzzlehttp/guzzle": "~6.0", - "illuminate/support": "5.*|^6", - "monolog/monolog": "^1.12|^2.0", - "php": ">=5.5.9" - }, - "require-dev": { - "laravel/laravel": "5.2.*", - "mockery/mockery": "0.9.*", - "phpunit/phpunit": "4.7.*", - "satooshi/php-coveralls": "dev-master" - }, - "type": "library", - "extra": { - "laravel": { - "providers": [ - "LaravelFCM\\FCMServiceProvider" - ], - "aliases": { - "FCM": "LaravelFCM\\Facades\\FCM", - "FCMGroup": "LaravelFCM\\Facades\\FCMGroup" - } - } - }, - "autoload": { - "psr-4": { - "LaravelFCM\\": "src/", - "LaravelFCM\\Mocks\\": "tests/mocks" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Brosy", - "email": "nicolas.brosy@gmail.com" - } - ], - "description": "Laravel / Lumen package for Firebase Cloud Messaging ", - "keywords": [ - "FCM", - "Firebase Cloud Messaging", - "firebase", - "laravel", - "lumen", - "notification", - "push" - ], - "time": "2019-11-26T16:14:39+00:00" - }, - { - "name": "cache/adapter-common", - "version": "0.3.3", - "source": { - "type": "git", - "url": "https://github.com/php-cache/adapter-common.git", - "reference": "874256105aefaa52b60599ab02858a4575e61095" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-cache/adapter-common/zipball/874256105aefaa52b60599ab02858a4575e61095", - "reference": "874256105aefaa52b60599ab02858a4575e61095", - "shasum": "" - }, - "require": { - "cache/taggable-cache": "^0.4", - "php": "^5.5 || ^7.0", - "psr/cache": "^1.0", - "psr/log": "^1.0" - }, - "require-dev": { - "cache/integration-tests": "^0.10", - "phpunit/phpunit": "^4.0 || ^5.1" - }, - "type": "library", - "autoload": { - "psr-4": { - "Cache\\Adapter\\Common\\": "" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Aaron Scherer", - "email": "aequasi@gmail.com", - "homepage": "https://github.com/aequasi" - }, - { - "name": "Tobias Nyholm", - "email": "tobias.nyholm@gmail.com", - "homepage": "https://github.com/Nyholm" - } - ], - "description": "Common classes for PSR-6 adapters", - "homepage": "http://www.php-cache.com/en/latest/", - "keywords": [ - "cache", - "psr-6", - "tag" - ], - "time": "2016-07-31T18:10:41+00:00" - }, - { - "name": "cache/filesystem-adapter", - "version": "0.3.3", - "source": { - "type": "git", - "url": "https://github.com/php-cache/filesystem-adapter.git", - "reference": "b05c31ea76dbe2650817e92265952a5d8b7fb070" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-cache/filesystem-adapter/zipball/b05c31ea76dbe2650817e92265952a5d8b7fb070", - "reference": "b05c31ea76dbe2650817e92265952a5d8b7fb070", - "shasum": "" - }, - "require": { - "cache/adapter-common": "^0.3", - "cache/taggable-cache": "^0.4", - "league/flysystem": "^1.0", - "php": "^5.5 || ^7.0", - "psr/cache": "^1.0" - }, - "provide": { - "psr/cache-implementation": "^1.0" - }, - "require-dev": { - "cache/integration-tests": "^0.11", - "phpunit/phpunit": "^4.0 || ^5.1" - }, - "type": "library", - "autoload": { - "psr-4": { - "Cache\\Adapter\\Filesystem\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Aaron Scherer", - "email": "aequasi@gmail.com", - "homepage": "https://github.com/aequasi" - }, - { - "name": "Tobias Nyholm", - "email": "tobias.nyholm@gmail.com", - "homepage": "https://github.com/Nyholm" - } - ], - "description": "A PSR-6 cache implementation using filesystem. This implementation supports tags", - "homepage": "http://www.php-cache.com/en/latest/", - "keywords": [ - "cache", - "filesystem", - "psr-6", - "tag" - ], - "time": "2016-12-25T09:15:25+00:00" - }, - { - "name": "cache/hierarchical-cache", - "version": "0.3.0", - "source": { - "type": "git", - "url": "https://github.com/php-cache/hierarchical-cache.git", - "reference": "783e179acc3c9d47c469513a2380219022bfa0bc" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-cache/hierarchical-cache/zipball/783e179acc3c9d47c469513a2380219022bfa0bc", - "reference": "783e179acc3c9d47c469513a2380219022bfa0bc", - "shasum": "" - }, - "require": { - "cache/taggable-cache": "^0.4", - "php": "^5.5 || ^7.0", - "psr/cache": "^1.0" - }, - "require-dev": { - "phpunit/phpunit": "^4.0 || ^5.1" - }, - "type": "library", - "autoload": { - "psr-4": { - "Cache\\Hierarchy\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Aaron Scherer", - "email": "aequasi@gmail.com", - "homepage": "https://github.com/aequasi" - }, - { - "name": "Tobias Nyholm", - "email": "tobias.nyholm@gmail.com", - "homepage": "https://github.com/Nyholm" - } - ], - "description": "A helper trait and interface to your PSR-6 cache to support hierarchical keys.", - "homepage": "http://www.php-cache.com/en/latest/", - "keywords": [ - "cache", - "hierarchical", - "psr-6", - "tag" - ], - "time": "2016-08-07T14:49:33+00:00" - }, - { - "name": "cache/predis-adapter", - "version": "0.4.2", - "source": { - "type": "git", - "url": "https://github.com/php-cache/predis-adapter.git", - "reference": "12038202d125d50a259737863aaf2a56f8cc9ee0" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-cache/predis-adapter/zipball/12038202d125d50a259737863aaf2a56f8cc9ee0", - "reference": "12038202d125d50a259737863aaf2a56f8cc9ee0", - "shasum": "" - }, - "require": { - "cache/adapter-common": "^0.3", - "cache/hierarchical-cache": "^0.3", - "cache/taggable-cache": "^0.4", - "php": "^5.5 || ^7.0", - "predis/predis": "^1.0", - "psr/cache": "^1.0" - }, - "provide": { - "psr/cache-implementation": "^1.0" - }, - "require-dev": { - "cache/integration-tests": "^0.11", - "phpunit/phpunit": "^4.0 || ^5.1" - }, - "type": "library", - "autoload": { - "psr-4": { - "Cache\\Adapter\\Predis\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Aaron Scherer", - "email": "aequasi@gmail.com", - "homepage": "https://github.com/aequasi" - }, - { - "name": "Tobias Nyholm", - "email": "tobias.nyholm@gmail.com", - "homepage": "https://github.com/Nyholm" - } - ], - "description": "A PSR-6 cache implementation using Redis (Predis). This implementation supports tags", - "homepage": "http://www.php-cache.com/en/latest/", - "keywords": [ - "cache", - "predis", - "psr-6", - "redis", - "tag" - ], - "time": "2016-09-28T12:11:35+00:00" - }, - { - "name": "cache/taggable-cache", - "version": "0.4.3", - "source": { - "type": "git", - "url": "https://github.com/php-cache/taggable-cache.git", - "reference": "8ae3042edd1ac9546c9eae1020dc2b438ef10742" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-cache/taggable-cache/zipball/8ae3042edd1ac9546c9eae1020dc2b438ef10742", - "reference": "8ae3042edd1ac9546c9eae1020dc2b438ef10742", - "shasum": "" - }, - "require": { - "php": "^5.5 || ^7.0", - "psr/cache": "^1.0" - }, - "require-dev": { - "cache/integration-tests": "^0.11", - "phpunit/phpunit": "^4.0 || ^5.1", - "symfony/cache": "^3.1" - }, - "type": "library", - "autoload": { - "psr-4": { - "Cache\\Taggable\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Aaron Scherer", - "email": "aequasi@gmail.com", - "homepage": "https://github.com/aequasi" - }, - { - "name": "Tobias Nyholm", - "email": "tobias.nyholm@gmail.com", - "homepage": "https://github.com/Nyholm" - } - ], - "description": "Add tag support to your PSR-6 cache implementation", - "homepage": "http://www.php-cache.com/en/latest/", - "keywords": [ - "Taggable", - "cache", - "psr6", - "tag" - ], - "time": "2016-08-08T17:20:09+00:00" - }, - { - "name": "clue/stream-filter", - "version": "v1.4.1", - "source": { - "type": "git", - "url": "https://github.com/clue/php-stream-filter.git", - "reference": "5a58cc30a8bd6a4eb8f856adf61dd3e013f53f71" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/clue/php-stream-filter/zipball/5a58cc30a8bd6a4eb8f856adf61dd3e013f53f71", - "reference": "5a58cc30a8bd6a4eb8f856adf61dd3e013f53f71", - "shasum": "" - }, - "require": { - "php": ">=5.3" - }, - "require-dev": { - "phpunit/phpunit": "^5.0 || ^4.8" - }, - "type": "library", - "autoload": { - "psr-4": { - "Clue\\StreamFilter\\": "src/" - }, - "files": [ - "src/functions_include.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Christian Lück", - "email": "christian@lueck.tv" - } - ], - "description": "A simple and modern approach to stream filtering in PHP", - "homepage": "https://github.com/clue/php-stream-filter", - "keywords": [ - "bucket brigade", - "callback", - "filter", - "php_user_filter", - "stream", - "stream_filter_append", - "stream_filter_register" - ], - "time": "2019-04-09T12:31:48+00:00" - }, - { - "name": "cocur/slugify", - "version": "v3.1", - "source": { - "type": "git", - "url": "https://github.com/cocur/slugify.git", - "reference": "b2ccf7b735f4f3df3979aef2e1ebf8e19ca772f7" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/cocur/slugify/zipball/b2ccf7b735f4f3df3979aef2e1ebf8e19ca772f7", - "reference": "b2ccf7b735f4f3df3979aef2e1ebf8e19ca772f7", - "shasum": "" - }, - "require": { - "ext-mbstring": "*", - "php": ">=5.5.9" - }, - "require-dev": { - "laravel/framework": "~5.1", - "latte/latte": "~2.2", - "league/container": "^2.2.0", - "mikey179/vfsstream": "~1.6", - "mockery/mockery": "~0.9", - "nette/di": "~2.2", - "phpunit/phpunit": "~4.8|~5.2", - "pimple/pimple": "~1.1", - "plumphp/plum": "~0.1", - "silex/silex": "~1.3", - "symfony/config": "~2.4|~3.0", - "symfony/dependency-injection": "~2.4|~3.0", - "symfony/http-kernel": "~2.4|~3.0", - "twig/twig": "~1.26|~2.0", - "zendframework/zend-modulemanager": "~2.2", - "zendframework/zend-servicemanager": "~2.2", - "zendframework/zend-view": "~2.2" - }, - "type": "library", - "autoload": { - "psr-4": { - "Cocur\\Slugify\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Ivo Bathke", - "email": "ivo.bathke@gmail.com" - }, - { - "name": "Florian Eckerstorfer", - "email": "florian@eckerstorfer.co", - "homepage": "https://florian.ec" - } - ], - "description": "Converts a string into a slug.", - "keywords": [ - "slug", - "slugify" - ], - "time": "2018-01-22T09:00:48+00:00" - }, - { - "name": "creativeorange/gravatar", - "version": "v1.0.11", - "source": { - "type": "git", - "url": "https://github.com/creativeorange/gravatar.git", - "reference": "4459b68a853ffdb1c2abbf9419214df46371889b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/creativeorange/gravatar/zipball/4459b68a853ffdb1c2abbf9419214df46371889b", - "reference": "4459b68a853ffdb1c2abbf9419214df46371889b", - "shasum": "" - }, - "require": { - "illuminate/support": "5.*", - "php": ">=5.4.0" - }, - "type": "library", - "extra": { - "laravel": { - "providers": [ - "Creativeorange\\Gravatar\\GravatarServiceProvider" - ], - "aliases": { - "Gravatar": "Creativeorange\\Gravatar\\Facades\\Gravatar" - } - } - }, - "autoload": { - "psr-4": { - "Creativeorange\\Gravatar\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Jaco Tijssen", - "email": "jaco@creativeorange.nl", - "homepage": "https://www.creativeorange.nl", - "role": "Developer" - } - ], - "description": "Gravatar for Laravel 5.0.x through 5.5.x package for retrieving gravatar image URLs or checking the existance of an image.", - "keywords": [ - "avatar", - "gravatar", - "laravel" - ], - "time": "2018-03-29T22:10:58+00:00" - }, - { - "name": "cviebrock/eloquent-sluggable", - "version": "4.5.1", - "source": { - "type": "git", - "url": "https://github.com/cviebrock/eloquent-sluggable.git", - "reference": "62ea99dbdd383697433add4f90a62a96a196578b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/cviebrock/eloquent-sluggable/zipball/62ea99dbdd383697433add4f90a62a96a196578b", - "reference": "62ea99dbdd383697433add4f90a62a96a196578b", - "shasum": "" - }, - "require": { - "cocur/slugify": "^3.1", - "illuminate/config": "~5.6.0", - "illuminate/database": "~5.6.0", - "illuminate/support": "~5.6.0", - "php": "^7.0" - }, - "require-dev": { - "codedungeon/phpunit-result-printer": "^0.19.6", - "mockery/mockery": "^0.9.4", - "orchestra/database": "~3.6.0", - "orchestra/testbench": "~3.6.0", - "phpunit/phpunit": "~7.0" - }, - "type": "library", - "extra": { - "laravel": { - "providers": [ - "Cviebrock\\EloquentSluggable\\ServiceProvider" - ] - } - }, - "autoload": { - "psr-4": { - "Cviebrock\\EloquentSluggable\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Colin Viebrock", - "email": "colin@viebrock.ca" - } - ], - "description": "Easy creation of slugs for your Eloquent models in Laravel 5.", - "homepage": "https://github.com/cviebrock/eloquent-sluggable", - "keywords": [ - "eloquent", - "eloquent-sluggable", - "laravel", - "lumen", - "slug", - "sluggable" - ], - "time": "2018-05-22T02:37:31+00:00" - }, - { - "name": "deligram/bioscope", - "version": "dev-master", - "source": { - "type": "git", - "url": "https://git.deligram.com/nahid/filesystem-bioscope.git", - "reference": "4f938dab7a64e82b355cf0fe5ecf33bfe0af62df" - }, - "require": { - "league/flysystem": "^1.0.20", - "nahid/apiz": "3.1.*", - "php": "^7.0" - }, - "require-dev": { - "phpunit/phpunit": "^6.0" - }, - "type": "library", - "autoload": { - "psr-4": { - "Deligram\\Bioscope\\": "src" - } - }, - "scripts": { - "test": [ - "vendor/bin/phpunit" - ] - }, - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nahid Bin Azhar", - "email": "nahid.dns@gmail.com", - "homepage": "http://nahid.im", - "role": "Lead Engineer" - } - ], - "description": "Flysystem Adapter for the Deligram", - "keywords": [ - "bioscope", - "cdn", - "deligram", - "media" - ], - "time": "2019-11-12T10:34:34+00:00" - }, - { - "name": "dnoegel/php-xdg-base-dir", - "version": "0.1", - "source": { - "type": "git", - "url": "https://github.com/dnoegel/php-xdg-base-dir.git", - "reference": "265b8593498b997dc2d31e75b89f053b5cc9621a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/dnoegel/php-xdg-base-dir/zipball/265b8593498b997dc2d31e75b89f053b5cc9621a", - "reference": "265b8593498b997dc2d31e75b89f053b5cc9621a", - "shasum": "" - }, - "require": { - "php": ">=5.3.2" - }, - "require-dev": { - "phpunit/phpunit": "@stable" - }, - "type": "project", - "autoload": { - "psr-4": { - "XdgBaseDir\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "description": "implementation of xdg base directory specification for php", - "time": "2014-10-24T07:27:01+00:00" - }, - { - "name": "doctrine/cache", - "version": "v1.8.0", - "source": { - "type": "git", - "url": "https://github.com/doctrine/cache.git", - "reference": "d768d58baee9a4862ca783840eca1b9add7a7f57" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/cache/zipball/d768d58baee9a4862ca783840eca1b9add7a7f57", - "reference": "d768d58baee9a4862ca783840eca1b9add7a7f57", - "shasum": "" - }, - "require": { - "php": "~7.1" - }, - "conflict": { - "doctrine/common": ">2.2,<2.4" - }, - "require-dev": { - "alcaeus/mongo-php-adapter": "^1.1", - "doctrine/coding-standard": "^4.0", - "mongodb/mongodb": "^1.1", - "phpunit/phpunit": "^7.0", - "predis/predis": "~1.0" - }, - "suggest": { - "alcaeus/mongo-php-adapter": "Required to use legacy MongoDB driver" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.8.x-dev" - } - }, - "autoload": { - "psr-4": { - "Doctrine\\Common\\Cache\\": "lib/Doctrine/Common/Cache" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Roman Borschel", - "email": "roman@code-factory.org" - }, - { - "name": "Benjamin Eberlei", - "email": "kontakt@beberlei.de" - }, - { - "name": "Guilherme Blanco", - "email": "guilhermeblanco@gmail.com" - }, - { - "name": "Jonathan Wage", - "email": "jonwage@gmail.com" - }, - { - "name": "Johannes Schmitt", - "email": "schmittjoh@gmail.com" - } - ], - "description": "Caching library offering an object-oriented API for many cache backends", - "homepage": "https://www.doctrine-project.org", - "keywords": [ - "cache", - "caching" - ], - "time": "2018-08-21T18:01:43+00:00" - }, - { - "name": "doctrine/dbal", - "version": "v2.8.0", - "source": { - "type": "git", - "url": "https://github.com/doctrine/dbal.git", - "reference": "5140a64c08b4b607b9bedaae0cedd26f04a0e621" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/dbal/zipball/5140a64c08b4b607b9bedaae0cedd26f04a0e621", - "reference": "5140a64c08b4b607b9bedaae0cedd26f04a0e621", - "shasum": "" - }, - "require": { - "doctrine/cache": "^1.0", - "doctrine/event-manager": "^1.0", - "ext-pdo": "*", - "php": "^7.1" - }, - "require-dev": { - "doctrine/coding-standard": "^4.0", - "jetbrains/phpstorm-stubs": "^2018.1.2", - "phpstan/phpstan": "^0.10.1", - "phpunit/phpunit": "^7.1.2", - "phpunit/phpunit-mock-objects": "!=3.2.4,!=3.2.5", - "symfony/console": "^2.0.5|^3.0|^4.0", - "symfony/phpunit-bridge": "^3.4.5|^4.0.5" - }, - "suggest": { - "symfony/console": "For helpful console commands such as SQL execution and import of files." - }, - "bin": [ - "bin/doctrine-dbal" - ], - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.8.x-dev", - "dev-develop": "3.0.x-dev" - } - }, - "autoload": { - "psr-0": { - "Doctrine\\DBAL\\": "lib/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Roman Borschel", - "email": "roman@code-factory.org" - }, - { - "name": "Benjamin Eberlei", - "email": "kontakt@beberlei.de" - }, - { - "name": "Guilherme Blanco", - "email": "guilhermeblanco@gmail.com" - }, - { - "name": "Jonathan Wage", - "email": "jonwage@gmail.com" - } - ], - "description": "Database Abstraction Layer", - "homepage": "http://www.doctrine-project.org", - "keywords": [ - "database", - "dbal", - "persistence", - "queryobject" - ], - "time": "2018-07-13T03:16:35+00:00" - }, - { - "name": "doctrine/event-manager", - "version": "v1.0.0", - "source": { - "type": "git", - "url": "https://github.com/doctrine/event-manager.git", - "reference": "a520bc093a0170feeb6b14e9d83f3a14452e64b3" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/event-manager/zipball/a520bc093a0170feeb6b14e9d83f3a14452e64b3", - "reference": "a520bc093a0170feeb6b14e9d83f3a14452e64b3", - "shasum": "" - }, - "require": { - "php": "^7.1" - }, - "conflict": { - "doctrine/common": "<2.9@dev" - }, - "require-dev": { - "doctrine/coding-standard": "^4.0", - "phpunit/phpunit": "^7.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev" - } - }, - "autoload": { - "psr-4": { - "Doctrine\\Common\\": "lib/Doctrine/Common" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Roman Borschel", - "email": "roman@code-factory.org" - }, - { - "name": "Benjamin Eberlei", - "email": "kontakt@beberlei.de" - }, - { - "name": "Guilherme Blanco", - "email": "guilhermeblanco@gmail.com" - }, - { - "name": "Jonathan Wage", - "email": "jonwage@gmail.com" - }, - { - "name": "Johannes Schmitt", - "email": "schmittjoh@gmail.com" - }, - { - "name": "Marco Pivetta", - "email": "ocramius@gmail.com" - } - ], - "description": "Doctrine Event Manager component", - "homepage": "https://www.doctrine-project.org/projects/event-manager.html", - "keywords": [ - "event", - "eventdispatcher", - "eventmanager" - ], - "time": "2018-06-11T11:59:03+00:00" - }, - { - "name": "doctrine/inflector", - "version": "v1.3.0", - "source": { - "type": "git", - "url": "https://github.com/doctrine/inflector.git", - "reference": "5527a48b7313d15261292c149e55e26eae771b0a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/inflector/zipball/5527a48b7313d15261292c149e55e26eae771b0a", - "reference": "5527a48b7313d15261292c149e55e26eae771b0a", - "shasum": "" - }, - "require": { - "php": "^7.1" - }, - "require-dev": { - "phpunit/phpunit": "^6.2" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.3.x-dev" - } - }, - "autoload": { - "psr-4": { - "Doctrine\\Common\\Inflector\\": "lib/Doctrine/Common/Inflector" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Roman Borschel", - "email": "roman@code-factory.org" - }, - { - "name": "Benjamin Eberlei", - "email": "kontakt@beberlei.de" - }, - { - "name": "Guilherme Blanco", - "email": "guilhermeblanco@gmail.com" - }, - { - "name": "Jonathan Wage", - "email": "jonwage@gmail.com" - }, - { - "name": "Johannes Schmitt", - "email": "schmittjoh@gmail.com" - } - ], - "description": "Common String Manipulations with regard to casing and singular/plural rules.", - "homepage": "http://www.doctrine-project.org", - "keywords": [ - "inflection", - "pluralize", - "singularize", - "string" - ], - "time": "2018-01-09T20:05:19+00:00" - }, - { - "name": "doctrine/lexer", - "version": "v1.0.1", - "source": { - "type": "git", - "url": "https://github.com/doctrine/lexer.git", - "reference": "83893c552fd2045dd78aef794c31e694c37c0b8c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/lexer/zipball/83893c552fd2045dd78aef794c31e694c37c0b8c", - "reference": "83893c552fd2045dd78aef794c31e694c37c0b8c", - "shasum": "" - }, - "require": { - "php": ">=5.3.2" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev" - } - }, - "autoload": { - "psr-0": { - "Doctrine\\Common\\Lexer\\": "lib/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Roman Borschel", - "email": "roman@code-factory.org" - }, - { - "name": "Guilherme Blanco", - "email": "guilhermeblanco@gmail.com" - }, - { - "name": "Johannes Schmitt", - "email": "schmittjoh@gmail.com" - } - ], - "description": "Base library for a lexer that can be used in Top-Down, Recursive Descent Parsers.", - "homepage": "http://www.doctrine-project.org", - "keywords": [ - "lexer", - "parser" - ], - "time": "2014-09-09T13:34:57+00:00" - }, - { - "name": "dragonmantank/cron-expression", - "version": "v2.2.0", - "source": { - "type": "git", - "url": "https://github.com/dragonmantank/cron-expression.git", - "reference": "92a2c3768d50e21a1f26a53cb795ce72806266c5" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/dragonmantank/cron-expression/zipball/92a2c3768d50e21a1f26a53cb795ce72806266c5", - "reference": "92a2c3768d50e21a1f26a53cb795ce72806266c5", - "shasum": "" - }, - "require": { - "php": ">=7.0.0" - }, - "require-dev": { - "phpunit/phpunit": "~6.4" - }, - "type": "library", - "autoload": { - "psr-4": { - "Cron\\": "src/Cron/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Michael Dowling", - "email": "mtdowling@gmail.com", - "homepage": "https://github.com/mtdowling" - }, - { - "name": "Chris Tankersley", - "email": "chris@ctankersley.com", - "homepage": "https://github.com/dragonmantank" - } - ], - "description": "CRON for PHP: Calculate the next or previous run date and determine if a CRON expression is due", - "keywords": [ - "cron", - "schedule" - ], - "time": "2018-06-06T03:12:17+00:00" - }, - { - "name": "egulias/email-validator", - "version": "2.1.6", - "source": { - "type": "git", - "url": "https://github.com/egulias/EmailValidator.git", - "reference": "0578b32b30b22de3e8664f797cf846fc9246f786" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/egulias/EmailValidator/zipball/0578b32b30b22de3e8664f797cf846fc9246f786", - "reference": "0578b32b30b22de3e8664f797cf846fc9246f786", - "shasum": "" - }, - "require": { - "doctrine/lexer": "^1.0.1", - "php": ">= 5.5" - }, - "require-dev": { - "dominicsayers/isemail": "dev-master", - "phpunit/phpunit": "^4.8.35||^5.7||^6.0", - "satooshi/php-coveralls": "^1.0.1" - }, - "suggest": { - "ext-intl": "PHP Internationalization Libraries are required to use the SpoofChecking validation" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.0.x-dev" - } - }, - "autoload": { - "psr-4": { - "Egulias\\EmailValidator\\": "EmailValidator" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Eduardo Gulias Davis" - } - ], - "description": "A library for validating emails against several RFCs", - "homepage": "https://github.com/egulias/EmailValidator", - "keywords": [ - "email", - "emailvalidation", - "emailvalidator", - "validation", - "validator" - ], - "time": "2018-09-25T20:47:26+00:00" - }, - { - "name": "elasticsearch/elasticsearch", - "version": "v5.5.0", - "source": { - "type": "git", - "url": "https://github.com/elastic/elasticsearch-php.git", - "reference": "48b8a90e2b97b4d69ce42851c1b9e59f8054661a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/elastic/elasticsearch-php/zipball/48b8a90e2b97b4d69ce42851c1b9e59f8054661a", - "reference": "48b8a90e2b97b4d69ce42851c1b9e59f8054661a", - "shasum": "" - }, - "require": { - "guzzlehttp/ringphp": "~1.0", - "php": "^5.6|^7.0", - "psr/log": "~1.0" - }, - "require-dev": { - "cpliakas/git-wrapper": "~1.0", - "doctrine/inflector": "^1.1", - "mockery/mockery": "0.9.4", - "phpunit/phpunit": "^4.7|^5.4", - "sami/sami": "~3.2", - "symfony/finder": "^2.8", - "symfony/yaml": "^2.8" - }, - "suggest": { - "ext-curl": "*", - "monolog/monolog": "Allows for client-level logging and tracing" - }, - "type": "library", - "autoload": { - "psr-4": { - "Elasticsearch\\": "src/Elasticsearch/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "Apache-2.0" - ], - "authors": [ - { - "name": "Zachary Tong" - } - ], - "description": "PHP Client for Elasticsearch", - "keywords": [ - "client", - "elasticsearch", - "search" - ], - "time": "2019-07-18T15:11:30+00:00" - }, - { - "name": "erusev/parsedown", - "version": "1.7.1", - "source": { - "type": "git", - "url": "https://github.com/erusev/parsedown.git", - "reference": "92e9c27ba0e74b8b028b111d1b6f956a15c01fc1" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/erusev/parsedown/zipball/92e9c27ba0e74b8b028b111d1b6f956a15c01fc1", - "reference": "92e9c27ba0e74b8b028b111d1b6f956a15c01fc1", - "shasum": "" - }, - "require": { - "ext-mbstring": "*", - "php": ">=5.3.0" - }, - "require-dev": { - "phpunit/phpunit": "^4.8.35" - }, - "type": "library", - "autoload": { - "psr-0": { - "Parsedown": "" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Emanuil Rusev", - "email": "hello@erusev.com", - "homepage": "http://erusev.com" - } - ], - "description": "Parser for Markdown.", - "homepage": "http://parsedown.org", - "keywords": [ - "markdown", - "parser" - ], - "time": "2018-03-08T01:11:30+00:00" - }, - { - "name": "fideloper/proxy", - "version": "4.0.0", - "source": { - "type": "git", - "url": "https://github.com/fideloper/TrustedProxy.git", - "reference": "cf8a0ca4b85659b9557e206c90110a6a4dba980a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/fideloper/TrustedProxy/zipball/cf8a0ca4b85659b9557e206c90110a6a4dba980a", - "reference": "cf8a0ca4b85659b9557e206c90110a6a4dba980a", - "shasum": "" - }, - "require": { - "illuminate/contracts": "~5.0", - "php": ">=5.4.0" - }, - "require-dev": { - "illuminate/http": "~5.6", - "mockery/mockery": "~1.0", - "phpunit/phpunit": "^6.0" - }, - "type": "library", - "extra": { - "laravel": { - "providers": [ - "Fideloper\\Proxy\\TrustedProxyServiceProvider" - ] - } - }, - "autoload": { - "psr-4": { - "Fideloper\\Proxy\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Chris Fidao", - "email": "fideloper@gmail.com" - } - ], - "description": "Set trusted proxies for Laravel", - "keywords": [ - "load balancing", - "proxy", - "trusted proxy" - ], - "time": "2018-02-07T20:20:57+00:00" - }, - { - "name": "guzzlehttp/guzzle", - "version": "6.4.1", - "source": { - "type": "git", - "url": "https://github.com/guzzle/guzzle.git", - "reference": "0895c932405407fd3a7368b6910c09a24d26db11" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/guzzle/guzzle/zipball/0895c932405407fd3a7368b6910c09a24d26db11", - "reference": "0895c932405407fd3a7368b6910c09a24d26db11", - "shasum": "" - }, - "require": { - "ext-json": "*", - "guzzlehttp/promises": "^1.0", - "guzzlehttp/psr7": "^1.6.1", - "php": ">=5.5" - }, - "require-dev": { - "ext-curl": "*", - "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.4 || ^7.0", - "psr/log": "^1.1" - }, - "suggest": { - "psr/log": "Required for using the Log middleware" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "6.3-dev" - } - }, - "autoload": { - "psr-4": { - "GuzzleHttp\\": "src/" - }, - "files": [ - "src/functions_include.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Michael Dowling", - "email": "mtdowling@gmail.com", - "homepage": "https://github.com/mtdowling" - } - ], - "description": "Guzzle is a PHP HTTP client library", - "homepage": "http://guzzlephp.org/", - "keywords": [ - "client", - "curl", - "framework", - "http", - "http client", - "rest", - "web service" - ], - "time": "2019-10-23T15:58:00+00:00" - }, - { - "name": "guzzlehttp/promises", - "version": "v1.3.1", - "source": { - "type": "git", - "url": "https://github.com/guzzle/promises.git", - "reference": "a59da6cf61d80060647ff4d3eb2c03a2bc694646" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/guzzle/promises/zipball/a59da6cf61d80060647ff4d3eb2c03a2bc694646", - "reference": "a59da6cf61d80060647ff4d3eb2c03a2bc694646", - "shasum": "" - }, - "require": { - "php": ">=5.5.0" - }, - "require-dev": { - "phpunit/phpunit": "^4.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.4-dev" - } - }, - "autoload": { - "psr-4": { - "GuzzleHttp\\Promise\\": "src/" - }, - "files": [ - "src/functions_include.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Michael Dowling", - "email": "mtdowling@gmail.com", - "homepage": "https://github.com/mtdowling" - } - ], - "description": "Guzzle promises library", - "keywords": [ - "promise" - ], - "time": "2016-12-20T10:07:11+00:00" - }, - { - "name": "guzzlehttp/psr7", - "version": "1.6.1", - "source": { - "type": "git", - "url": "https://github.com/guzzle/psr7.git", - "reference": "239400de7a173fe9901b9ac7c06497751f00727a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/guzzle/psr7/zipball/239400de7a173fe9901b9ac7c06497751f00727a", - "reference": "239400de7a173fe9901b9ac7c06497751f00727a", - "shasum": "" - }, - "require": { - "php": ">=5.4.0", - "psr/http-message": "~1.0", - "ralouphie/getallheaders": "^2.0.5 || ^3.0.0" - }, - "provide": { - "psr/http-message-implementation": "1.0" - }, - "require-dev": { - "ext-zlib": "*", - "phpunit/phpunit": "~4.8.36 || ^5.7.27 || ^6.5.8" - }, - "suggest": { - "zendframework/zend-httphandlerrunner": "Emit PSR-7 responses" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.6-dev" - } - }, - "autoload": { - "psr-4": { - "GuzzleHttp\\Psr7\\": "src/" - }, - "files": [ - "src/functions_include.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Michael Dowling", - "email": "mtdowling@gmail.com", - "homepage": "https://github.com/mtdowling" - }, - { - "name": "Tobias Schultze", - "homepage": "https://github.com/Tobion" - } - ], - "description": "PSR-7 message implementation that also provides common utility methods", - "keywords": [ - "http", - "message", - "psr-7", - "request", - "response", - "stream", - "uri", - "url" - ], - "time": "2019-07-01T23:21:34+00:00" - }, - { - "name": "guzzlehttp/ringphp", - "version": "1.1.1", - "source": { - "type": "git", - "url": "https://github.com/guzzle/RingPHP.git", - "reference": "5e2a174052995663dd68e6b5ad838afd47dd615b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/guzzle/RingPHP/zipball/5e2a174052995663dd68e6b5ad838afd47dd615b", - "reference": "5e2a174052995663dd68e6b5ad838afd47dd615b", - "shasum": "" - }, - "require": { - "guzzlehttp/streams": "~3.0", - "php": ">=5.4.0", - "react/promise": "~2.0" - }, - "require-dev": { - "ext-curl": "*", - "phpunit/phpunit": "~4.0" - }, - "suggest": { - "ext-curl": "Guzzle will use specific adapters if cURL is present" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.1-dev" - } - }, - "autoload": { - "psr-4": { - "GuzzleHttp\\Ring\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Michael Dowling", - "email": "mtdowling@gmail.com", - "homepage": "https://github.com/mtdowling" - } - ], - "description": "Provides a simple API and specification that abstracts away the details of HTTP into a single PHP function.", - "time": "2018-07-31T13:22:33+00:00" - }, - { - "name": "guzzlehttp/streams", - "version": "3.0.0", - "source": { - "type": "git", - "url": "https://github.com/guzzle/streams.git", - "reference": "47aaa48e27dae43d39fc1cea0ccf0d84ac1a2ba5" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/guzzle/streams/zipball/47aaa48e27dae43d39fc1cea0ccf0d84ac1a2ba5", - "reference": "47aaa48e27dae43d39fc1cea0ccf0d84ac1a2ba5", - "shasum": "" - }, - "require": { - "php": ">=5.4.0" - }, - "require-dev": { - "phpunit/phpunit": "~4.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.0-dev" - } - }, - "autoload": { - "psr-4": { - "GuzzleHttp\\Stream\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Michael Dowling", - "email": "mtdowling@gmail.com", - "homepage": "https://github.com/mtdowling" - } - ], - "description": "Provides a simple abstraction over streams of data", - "homepage": "http://guzzlephp.org/", - "keywords": [ - "Guzzle", - "stream" - ], - "time": "2014-10-12T19:18:40+00:00" - }, - { - "name": "http-interop/http-factory-guzzle", - "version": "1.0.0", - "source": { - "type": "git", - "url": "https://github.com/http-interop/http-factory-guzzle.git", - "reference": "34861658efb9899a6618cef03de46e2a52c80fc0" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/http-interop/http-factory-guzzle/zipball/34861658efb9899a6618cef03de46e2a52c80fc0", - "reference": "34861658efb9899a6618cef03de46e2a52c80fc0", - "shasum": "" - }, - "require": { - "guzzlehttp/psr7": "^1.4.2", - "psr/http-factory": "^1.0" - }, - "provide": { - "psr/http-factory-implementation": "^1.0" - }, - "require-dev": { - "http-interop/http-factory-tests": "^0.5", - "phpunit/phpunit": "^6.5" - }, - "type": "library", - "autoload": { - "psr-4": { - "Http\\Factory\\Guzzle\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "PHP-FIG", - "homepage": "http://www.php-fig.org/" - } - ], - "description": "An HTTP Factory using Guzzle PSR7", - "keywords": [ - "factory", - "http", - "psr-17", - "psr-7" - ], - "time": "2018-07-31T19:32:56+00:00" - }, - { - "name": "intervention/image", - "version": "2.4.2", - "source": { - "type": "git", - "url": "https://github.com/Intervention/image.git", - "reference": "e82d274f786e3d4b866a59b173f42e716f0783eb" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/Intervention/image/zipball/e82d274f786e3d4b866a59b173f42e716f0783eb", - "reference": "e82d274f786e3d4b866a59b173f42e716f0783eb", - "shasum": "" - }, - "require": { - "ext-fileinfo": "*", - "guzzlehttp/psr7": "~1.1", - "php": ">=5.4.0" - }, - "require-dev": { - "mockery/mockery": "~0.9.2", - "phpunit/phpunit": "^4.8 || ^5.7" - }, - "suggest": { - "ext-gd": "to use GD library based image processing.", - "ext-imagick": "to use Imagick based image processing.", - "intervention/imagecache": "Caching extension for the Intervention Image library" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.4-dev" - }, - "laravel": { - "providers": [ - "Intervention\\Image\\ImageServiceProvider" - ], - "aliases": { - "Image": "Intervention\\Image\\Facades\\Image" - } - } - }, - "autoload": { - "psr-4": { - "Intervention\\Image\\": "src/Intervention/Image" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Oliver Vogel", - "email": "oliver@olivervogel.com", - "homepage": "http://olivervogel.com/" - } - ], - "description": "Image handling and manipulation library with support for Laravel integration", - "homepage": "http://image.intervention.io/", - "keywords": [ - "gd", - "image", - "imagick", - "laravel", - "thumbnail", - "watermark" - ], - "time": "2018-05-29T14:19:03+00:00" - }, - { - "name": "jakub-onderka/php-console-color", - "version": "v0.2", - "source": { - "type": "git", - "url": "https://github.com/JakubOnderka/PHP-Console-Color.git", - "reference": "d5deaecff52a0d61ccb613bb3804088da0307191" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/JakubOnderka/PHP-Console-Color/zipball/d5deaecff52a0d61ccb613bb3804088da0307191", - "reference": "d5deaecff52a0d61ccb613bb3804088da0307191", - "shasum": "" - }, - "require": { - "php": ">=5.4.0" - }, - "require-dev": { - "jakub-onderka/php-code-style": "1.0", - "jakub-onderka/php-parallel-lint": "1.0", - "jakub-onderka/php-var-dump-check": "0.*", - "phpunit/phpunit": "~4.3", - "squizlabs/php_codesniffer": "1.*" - }, - "type": "library", - "autoload": { - "psr-4": { - "JakubOnderka\\PhpConsoleColor\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-2-Clause" - ], - "authors": [ - { - "name": "Jakub Onderka", - "email": "jakub.onderka@gmail.com" - } - ], - "time": "2018-09-29T17:23:10+00:00" - }, - { - "name": "jakub-onderka/php-console-highlighter", - "version": "v0.4", - "source": { - "type": "git", - "url": "https://github.com/JakubOnderka/PHP-Console-Highlighter.git", - "reference": "9f7a229a69d52506914b4bc61bfdb199d90c5547" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/JakubOnderka/PHP-Console-Highlighter/zipball/9f7a229a69d52506914b4bc61bfdb199d90c5547", - "reference": "9f7a229a69d52506914b4bc61bfdb199d90c5547", - "shasum": "" - }, - "require": { - "ext-tokenizer": "*", - "jakub-onderka/php-console-color": "~0.2", - "php": ">=5.4.0" - }, - "require-dev": { - "jakub-onderka/php-code-style": "~1.0", - "jakub-onderka/php-parallel-lint": "~1.0", - "jakub-onderka/php-var-dump-check": "~0.1", - "phpunit/phpunit": "~4.0", - "squizlabs/php_codesniffer": "~1.5" - }, - "type": "library", - "autoload": { - "psr-4": { - "JakubOnderka\\PhpConsoleHighlighter\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Jakub Onderka", - "email": "acci@acci.cz", - "homepage": "http://www.acci.cz/" - } - ], - "description": "Highlight PHP code in terminal", - "time": "2018-09-29T18:48:56+00:00" - }, - { - "name": "jdorn/sql-formatter", - "version": "v1.2.17", - "source": { - "type": "git", - "url": "https://github.com/jdorn/sql-formatter.git", - "reference": "64990d96e0959dff8e059dfcdc1af130728d92bc" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/jdorn/sql-formatter/zipball/64990d96e0959dff8e059dfcdc1af130728d92bc", - "reference": "64990d96e0959dff8e059dfcdc1af130728d92bc", - "shasum": "" - }, - "require": { - "php": ">=5.2.4" - }, - "require-dev": { - "phpunit/phpunit": "3.7.*" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.3.x-dev" - } - }, - "autoload": { - "classmap": [ - "lib" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Jeremy Dorn", - "email": "jeremy@jeremydorn.com", - "homepage": "http://jeremydorn.com/" - } - ], - "description": "a PHP SQL highlighting library", - "homepage": "https://github.com/jdorn/sql-formatter/", - "keywords": [ - "highlight", - "sql" - ], - "time": "2014-01-12T16:20:24+00:00" - }, - { - "name": "jean85/pretty-package-versions", - "version": "1.2", - "source": { - "type": "git", - "url": "https://github.com/Jean85/pretty-package-versions.git", - "reference": "75c7effcf3f77501d0e0caa75111aff4daa0dd48" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/Jean85/pretty-package-versions/zipball/75c7effcf3f77501d0e0caa75111aff4daa0dd48", - "reference": "75c7effcf3f77501d0e0caa75111aff4daa0dd48", - "shasum": "" - }, - "require": { - "ocramius/package-versions": "^1.2.0", - "php": "^7.0" - }, - "require-dev": { - "phpunit/phpunit": "^6.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.x-dev" - } - }, - "autoload": { - "psr-4": { - "Jean85\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Alessandro Lai", - "email": "alessandro.lai85@gmail.com" - } - ], - "description": "A wrapper for ocramius/package-versions to get pretty versions strings", - "keywords": [ - "composer", - "package", - "release", - "versions" - ], - "time": "2018-06-13T13:22:40+00:00" - }, - { - "name": "jenssegers/date", - "version": "v3.4.0", - "source": { - "type": "git", - "url": "https://github.com/jenssegers/date.git", - "reference": "3f5f94f28bd5108fab011869434209101d4189ae" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/jenssegers/date/zipball/3f5f94f28bd5108fab011869434209101d4189ae", - "reference": "3f5f94f28bd5108fab011869434209101d4189ae", - "shasum": "" - }, - "require": { - "nesbot/carbon": "^1.0", - "php": ">=5.6", - "symfony/translation": "^2.7|^3.0|^4.0" - }, - "require-dev": { - "phpunit/phpunit": "^5.0|^6.0|^7.0", - "satooshi/php-coveralls": "^2.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.1-dev" - }, - "laravel": { - "providers": [ - "Jenssegers\\Date\\DateServiceProvider" - ], - "aliases": { - "Date": "Jenssegers\\Date\\Date" - } - } - }, - "autoload": { - "psr-4": { - "Jenssegers\\Date\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Jens Segers", - "homepage": "https://jenssegers.com" - } - ], - "description": "A date library to help you work with dates in different languages", - "homepage": "https://github.com/jenssegers/date", - "keywords": [ - "carbon", - "date", - "datetime", - "i18n", - "laravel", - "time", - "translation" - ], - "time": "2018-05-16T11:53:55+00:00" - }, - { - "name": "jeremeamia/SuperClosure", - "version": "2.4.0", - "source": { - "type": "git", - "url": "https://github.com/jeremeamia/super_closure.git", - "reference": "5707d5821b30b9a07acfb4d76949784aaa0e9ce9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/jeremeamia/super_closure/zipball/5707d5821b30b9a07acfb4d76949784aaa0e9ce9", - "reference": "5707d5821b30b9a07acfb4d76949784aaa0e9ce9", - "shasum": "" - }, - "require": { - "nikic/php-parser": "^1.2|^2.0|^3.0|^4.0", - "php": ">=5.4", - "symfony/polyfill-php56": "^1.0" - }, - "require-dev": { - "phpunit/phpunit": "^4.0|^5.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.4-dev" - } - }, - "autoload": { - "psr-4": { - "SuperClosure\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Jeremy Lindblom", - "email": "jeremeamia@gmail.com", - "homepage": "https://github.com/jeremeamia", - "role": "Developer" - } - ], - "description": "Serialize Closure objects, including their context and binding", - "homepage": "https://github.com/jeremeamia/super_closure", - "keywords": [ - "closure", - "function", - "lambda", - "parser", - "serializable", - "serialize", - "tokenizer" - ], - "time": "2018-03-21T22:21:57+00:00" - }, - { - "name": "kalnoy/nestedset", - "version": "v4.3.3", - "source": { - "type": "git", - "url": "https://github.com/lazychaser/laravel-nestedset.git", - "reference": "8f2882b8e402cce1204233541ea8ff51513f9e71" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/lazychaser/laravel-nestedset/zipball/8f2882b8e402cce1204233541ea8ff51513f9e71", - "reference": "8f2882b8e402cce1204233541ea8ff51513f9e71", - "shasum": "" - }, - "require": { - "illuminate/database": "5.2 - 5.7", - "illuminate/events": "5.2 - 5.7", - "illuminate/support": "5.2 - 5.7", - "php": ">=5.5.9" - }, - "require-dev": { - "phpunit/phpunit": "4.8.*" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "v4.2.x-dev" - }, - "laravel": { - "providers": [ - "Kalnoy\\Nestedset\\NestedSetServiceProvider" - ] - } - }, - "autoload": { - "psr-4": { - "Kalnoy\\Nestedset\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Alexander Kalnoy", - "email": "lazychaser@gmail.com" - } - ], - "description": "Nested Set Model for Laravel 4-5", - "keywords": [ - "database", - "hierarchy", - "laravel", - "nested sets", - "nsm" - ], - "time": "2018-09-04T15:11:11+00:00" - }, - { - "name": "laravel/framework", - "version": "v5.6.39", - "source": { - "type": "git", - "url": "https://github.com/laravel/framework.git", - "reference": "37bb306f516669ab4f888c16003f694313ab299e" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laravel/framework/zipball/37bb306f516669ab4f888c16003f694313ab299e", - "reference": "37bb306f516669ab4f888c16003f694313ab299e", - "shasum": "" - }, - "require": { - "doctrine/inflector": "~1.1", - "dragonmantank/cron-expression": "~2.0", - "erusev/parsedown": "~1.7", - "ext-mbstring": "*", - "ext-openssl": "*", - "league/flysystem": "^1.0.8", - "monolog/monolog": "~1.12", - "nesbot/carbon": "1.25.*", - "php": "^7.1.3", - "psr/container": "~1.0", - "psr/simple-cache": "^1.0", - "ramsey/uuid": "^3.7", - "swiftmailer/swiftmailer": "~6.0", - "symfony/console": "~4.0", - "symfony/debug": "~4.0", - "symfony/finder": "~4.0", - "symfony/http-foundation": "~4.0", - "symfony/http-kernel": "~4.0", - "symfony/process": "~4.0", - "symfony/routing": "~4.0", - "symfony/var-dumper": "~4.0", - "tijsverkoyen/css-to-inline-styles": "^2.2.1", - "vlucas/phpdotenv": "~2.2" - }, - "conflict": { - "tightenco/collect": "<5.5.33" - }, - "replace": { - "illuminate/auth": "self.version", - "illuminate/broadcasting": "self.version", - "illuminate/bus": "self.version", - "illuminate/cache": "self.version", - "illuminate/config": "self.version", - "illuminate/console": "self.version", - "illuminate/container": "self.version", - "illuminate/contracts": "self.version", - "illuminate/cookie": "self.version", - "illuminate/database": "self.version", - "illuminate/encryption": "self.version", - "illuminate/events": "self.version", - "illuminate/filesystem": "self.version", - "illuminate/hashing": "self.version", - "illuminate/http": "self.version", - "illuminate/log": "self.version", - "illuminate/mail": "self.version", - "illuminate/notifications": "self.version", - "illuminate/pagination": "self.version", - "illuminate/pipeline": "self.version", - "illuminate/queue": "self.version", - "illuminate/redis": "self.version", - "illuminate/routing": "self.version", - "illuminate/session": "self.version", - "illuminate/support": "self.version", - "illuminate/translation": "self.version", - "illuminate/validation": "self.version", - "illuminate/view": "self.version" - }, - "require-dev": { - "aws/aws-sdk-php": "~3.0", - "doctrine/dbal": "~2.6", - "filp/whoops": "^2.1.4", - "league/flysystem-cached-adapter": "~1.0", - "mockery/mockery": "~1.0", - "moontoast/math": "^1.1", - "orchestra/testbench-core": "3.6.*", - "pda/pheanstalk": "~3.0", - "phpunit/phpunit": "~7.0", - "predis/predis": "^1.1.1", - "symfony/css-selector": "~4.0", - "symfony/dom-crawler": "~4.0" - }, - "suggest": { - "aws/aws-sdk-php": "Required to use the SQS queue driver and SES mail driver (~3.0).", - "doctrine/dbal": "Required to rename columns and drop SQLite columns (~2.6).", - "ext-pcntl": "Required to use all features of the queue worker.", - "ext-posix": "Required to use all features of the queue worker.", - "fzaninotto/faker": "Required to use the eloquent factory builder (~1.4).", - "guzzlehttp/guzzle": "Required to use the Mailgun and Mandrill mail drivers and the ping methods on schedules (~6.0).", - "laravel/tinker": "Required to use the tinker console command (~1.0).", - "league/flysystem-aws-s3-v3": "Required to use the Flysystem S3 driver (~1.0).", - "league/flysystem-cached-adapter": "Required to use the Flysystem cache (~1.0).", - "league/flysystem-rackspace": "Required to use the Flysystem Rackspace driver (~1.0).", - "league/flysystem-sftp": "Required to use the Flysystem SFTP driver (~1.0).", - "nexmo/client": "Required to use the Nexmo transport (~1.0).", - "pda/pheanstalk": "Required to use the beanstalk queue driver (~3.0).", - "predis/predis": "Required to use the redis cache and queue drivers (~1.0).", - "pusher/pusher-php-server": "Required to use the Pusher broadcast driver (~3.0).", - "symfony/css-selector": "Required to use some of the crawler integration testing tools (~4.0).", - "symfony/dom-crawler": "Required to use most of the crawler integration testing tools (~4.0).", - "symfony/psr-http-message-bridge": "Required to psr7 bridging features (~1.0)." - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "5.6-dev" - } - }, - "autoload": { - "files": [ - "src/Illuminate/Foundation/helpers.php", - "src/Illuminate/Support/helpers.php" - ], - "psr-4": { - "Illuminate\\": "src/Illuminate/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Taylor Otwell", - "email": "taylor@laravel.com" - } - ], - "description": "The Laravel Framework.", - "homepage": "https://laravel.com", - "keywords": [ - "framework", - "laravel" - ], - "time": "2018-10-04T14:50:41+00:00" - }, - { - "name": "laravel/scout", - "version": "v7.2.1", - "source": { - "type": "git", - "url": "https://github.com/laravel/scout.git", - "reference": "733f334cc2487c6ac85a557ae5eefd29f6bb1ba3" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laravel/scout/zipball/733f334cc2487c6ac85a557ae5eefd29f6bb1ba3", - "reference": "733f334cc2487c6ac85a557ae5eefd29f6bb1ba3", - "shasum": "" - }, - "require": { - "illuminate/bus": "~5.4.0|~5.5.0|~5.6.0|~5.7.0|~5.8.0|^6.0|^7.0", - "illuminate/contracts": "~5.4.0|~5.5.0|~5.6.0|~5.7.0|~5.8.0|^6.0|^7.0", - "illuminate/database": "~5.4.0|~5.5.0|~5.6.0|~5.7.0|~5.8.0|^6.0|^7.0", - "illuminate/pagination": "~5.4.0|~5.5.0|~5.6.0|~5.7.0|~5.8.0|^6.0|^7.0", - "illuminate/queue": "~5.4.0|~5.5.0|~5.6.0|~5.7.0|~5.8.0|^6.0|^7.0", - "illuminate/support": "~5.4.0|~5.5.0|~5.6.0|~5.7.0|~5.8.0|^6.0|^7.0", - "php": "^7.1.3" - }, - "require-dev": { - "algolia/algoliasearch-client-php": "^2.2", - "mockery/mockery": "^1.0", - "phpunit/phpunit": "^6.0|^7.0|^8.0" - }, - "suggest": { - "algolia/algoliasearch-client-php": "Required to use the Algolia engine (^2.2)." - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "7.0-dev" - }, - "laravel": { - "providers": [ - "Laravel\\Scout\\ScoutServiceProvider" - ] - } - }, - "autoload": { - "psr-4": { - "Laravel\\Scout\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Taylor Otwell", - "email": "taylor@laravel.com" - } - ], - "description": "Laravel Scout provides a driver based solution to searching your Eloquent models.", - "keywords": [ - "algolia", - "laravel", - "search" - ], - "time": "2019-09-24T21:06:28+00:00" - }, - { - "name": "laravel/socialite", - "version": "v3.3.0", - "source": { - "type": "git", - "url": "https://github.com/laravel/socialite.git", - "reference": "79316f36641f1916a50ab14d368acdf1d97e46de" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laravel/socialite/zipball/79316f36641f1916a50ab14d368acdf1d97e46de", - "reference": "79316f36641f1916a50ab14d368acdf1d97e46de", - "shasum": "" - }, - "require": { - "guzzlehttp/guzzle": "~6.0", - "illuminate/contracts": "~5.4", - "illuminate/http": "~5.4", - "illuminate/support": "~5.4", - "league/oauth1-client": "~1.0", - "php": ">=5.6.4" - }, - "require-dev": { - "mockery/mockery": "~0.9", - "phpunit/phpunit": "~4.0|~5.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.0-dev" - }, - "laravel": { - "providers": [ - "Laravel\\Socialite\\SocialiteServiceProvider" - ], - "aliases": { - "Socialite": "Laravel\\Socialite\\Facades\\Socialite" - } - } - }, - "autoload": { - "psr-4": { - "Laravel\\Socialite\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Taylor Otwell", - "email": "taylor@laravel.com" - } - ], - "description": "Laravel wrapper around OAuth 1 & OAuth 2 libraries.", - "homepage": "https://laravel.com", - "keywords": [ - "laravel", - "oauth" - ], - "time": "2018-12-21T14:06:32+00:00" - }, - { - "name": "laravel/tinker", - "version": "v1.0.8", - "source": { - "type": "git", - "url": "https://github.com/laravel/tinker.git", - "reference": "cafbf598a90acde68985660e79b2b03c5609a405" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laravel/tinker/zipball/cafbf598a90acde68985660e79b2b03c5609a405", - "reference": "cafbf598a90acde68985660e79b2b03c5609a405", - "shasum": "" - }, - "require": { - "illuminate/console": "~5.1", - "illuminate/contracts": "~5.1", - "illuminate/support": "~5.1", - "php": ">=5.5.9", - "psy/psysh": "0.7.*|0.8.*|0.9.*", - "symfony/var-dumper": "~3.0|~4.0" - }, - "require-dev": { - "phpunit/phpunit": "~4.0|~5.0" - }, - "suggest": { - "illuminate/database": "The Illuminate Database package (~5.1)." - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0-dev" - }, - "laravel": { - "providers": [ - "Laravel\\Tinker\\TinkerServiceProvider" - ] - } - }, - "autoload": { - "psr-4": { - "Laravel\\Tinker\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Taylor Otwell", - "email": "taylor@laravel.com" - } - ], - "description": "Powerful REPL for the Laravel framework.", - "keywords": [ - "REPL", - "Tinker", - "laravel", - "psysh" - ], - "time": "2018-10-12T19:39:35+00:00" - }, - { - "name": "lcobucci/jwt", - "version": "3.2.5", - "source": { - "type": "git", - "url": "https://github.com/lcobucci/jwt.git", - "reference": "82be04b4753f8b7693b62852b7eab30f97524f9b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/lcobucci/jwt/zipball/82be04b4753f8b7693b62852b7eab30f97524f9b", - "reference": "82be04b4753f8b7693b62852b7eab30f97524f9b", - "shasum": "" - }, - "require": { - "ext-openssl": "*", - "php": ">=5.5" - }, - "require-dev": { - "mdanter/ecc": "~0.3.1", - "mikey179/vfsstream": "~1.5", - "phpmd/phpmd": "~2.2", - "phpunit/php-invoker": "~1.1", - "phpunit/phpunit": "~4.5", - "squizlabs/php_codesniffer": "~2.3" - }, - "suggest": { - "mdanter/ecc": "Required to use Elliptic Curves based algorithms." - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.1-dev" - } - }, - "autoload": { - "psr-4": { - "Lcobucci\\JWT\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Luís Otávio Cobucci Oblonczyk", - "email": "lcobucci@gmail.com", - "role": "Developer" - } - ], - "description": "A simple library to work with JSON Web Token and JSON Web Signature", - "keywords": [ - "JWS", - "jwt" - ], - "time": "2018-11-11T12:22:26+00:00" - }, - { - "name": "league/flysystem", - "version": "1.0.50", - "source": { - "type": "git", - "url": "https://github.com/thephpleague/flysystem.git", - "reference": "dab4e7624efa543a943be978008f439c333f2249" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/dab4e7624efa543a943be978008f439c333f2249", - "reference": "dab4e7624efa543a943be978008f439c333f2249", - "shasum": "" - }, - "require": { - "ext-fileinfo": "*", - "php": ">=5.5.9" - }, - "conflict": { - "league/flysystem-sftp": "<1.0.6" - }, - "require-dev": { - "phpspec/phpspec": "^3.4", - "phpunit/phpunit": "^5.7.10" - }, - "suggest": { - "ext-fileinfo": "Required for MimeType", - "ext-ftp": "Allows you to use FTP server storage", - "ext-openssl": "Allows you to use FTPS server storage", - "league/flysystem-aws-s3-v2": "Allows you to use S3 storage with AWS SDK v2", - "league/flysystem-aws-s3-v3": "Allows you to use S3 storage with AWS SDK v3", - "league/flysystem-azure": "Allows you to use Windows Azure Blob storage", - "league/flysystem-cached-adapter": "Flysystem adapter decorator for metadata caching", - "league/flysystem-eventable-filesystem": "Allows you to use EventableFilesystem", - "league/flysystem-rackspace": "Allows you to use Rackspace Cloud Files", - "league/flysystem-sftp": "Allows you to use SFTP server storage via phpseclib", - "league/flysystem-webdav": "Allows you to use WebDAV storage", - "league/flysystem-ziparchive": "Allows you to use ZipArchive adapter", - "spatie/flysystem-dropbox": "Allows you to use Dropbox storage", - "srmklive/flysystem-dropbox-v2": "Allows you to use Dropbox storage for PHP 5 applications" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.1-dev" - } - }, - "autoload": { - "psr-4": { - "League\\Flysystem\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Frank de Jonge", - "email": "info@frenky.net" - } - ], - "description": "Filesystem abstraction: Many filesystems, one API.", - "keywords": [ - "Cloud Files", - "WebDAV", - "abstraction", - "aws", - "cloud", - "copy.com", - "dropbox", - "file systems", - "files", - "filesystem", - "filesystems", - "ftp", - "rackspace", - "remote", - "s3", - "sftp", - "storage" - ], - "time": "2019-02-01T08:50:36+00:00" - }, - { - "name": "league/flysystem-cached-adapter", - "version": "1.0.9", - "source": { - "type": "git", - "url": "https://github.com/thephpleague/flysystem-cached-adapter.git", - "reference": "08ef74e9be88100807a3b92cc9048a312bf01d6f" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/thephpleague/flysystem-cached-adapter/zipball/08ef74e9be88100807a3b92cc9048a312bf01d6f", - "reference": "08ef74e9be88100807a3b92cc9048a312bf01d6f", - "shasum": "" - }, - "require": { - "league/flysystem": "~1.0", - "psr/cache": "^1.0.0" - }, - "require-dev": { - "mockery/mockery": "~0.9", - "phpspec/phpspec": "^3.4", - "phpunit/phpunit": "^5.7", - "predis/predis": "~1.0", - "tedivm/stash": "~0.12" - }, - "suggest": { - "ext-phpredis": "Pure C implemented extension for PHP" - }, - "type": "library", - "autoload": { - "psr-4": { - "League\\Flysystem\\Cached\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "frankdejonge", - "email": "info@frenky.net" - } - ], - "description": "An adapter decorator to enable meta-data caching.", - "time": "2018-07-09T20:51:04+00:00" - }, - { - "name": "league/glide", - "version": "1.3.0", - "source": { - "type": "git", - "url": "https://github.com/thephpleague/glide.git", - "reference": "bd29f65c9666abd72e66916e0573801e435ca878" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/thephpleague/glide/zipball/bd29f65c9666abd72e66916e0573801e435ca878", - "reference": "bd29f65c9666abd72e66916e0573801e435ca878", - "shasum": "" - }, - "require": { - "intervention/image": "^2.1", - "league/flysystem": "^1.0", - "php": "^5.4 | ^7.0", - "psr/http-message": "^1.0" - }, - "require-dev": { - "mockery/mockery": "~0.9", - "phpunit/php-token-stream": "^1.4", - "phpunit/phpunit": "~4.4" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.1-dev" - } - }, - "autoload": { - "psr-4": { - "League\\Glide\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Jonathan Reinink", - "email": "jonathan@reinink.ca", - "homepage": "http://reinink.ca" - } - ], - "description": "Wonderfully easy on-demand image manipulation library with an HTTP based API.", - "homepage": "http://glide.thephpleague.com", - "keywords": [ - "ImageMagick", - "editing", - "gd", - "image", - "imagick", - "league", - "manipulation", - "processing" - ], - "time": "2018-02-12T23:28:25+00:00" - }, - { - "name": "league/oauth1-client", - "version": "1.7.0", - "source": { - "type": "git", - "url": "https://github.com/thephpleague/oauth1-client.git", - "reference": "fca5f160650cb74d23fc11aa570dd61f86dcf647" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/thephpleague/oauth1-client/zipball/fca5f160650cb74d23fc11aa570dd61f86dcf647", - "reference": "fca5f160650cb74d23fc11aa570dd61f86dcf647", - "shasum": "" - }, - "require": { - "guzzlehttp/guzzle": "^6.0", - "php": ">=5.5.0" - }, - "require-dev": { - "mockery/mockery": "^0.9", - "phpunit/phpunit": "^4.0", - "squizlabs/php_codesniffer": "^2.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0-dev" - } - }, - "autoload": { - "psr-4": { - "League\\OAuth1\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Ben Corlett", - "email": "bencorlett@me.com", - "homepage": "http://www.webcomm.com.au", - "role": "Developer" - } - ], - "description": "OAuth 1.0 Client Library", - "keywords": [ - "Authentication", - "SSO", - "authorization", - "bitbucket", - "identity", - "idp", - "oauth", - "oauth1", - "single sign on", - "trello", - "tumblr", - "twitter" - ], - "time": "2016-08-17T00:36:58+00:00" - }, - { - "name": "maatwebsite/excel", - "version": "2.1.30", - "source": { - "type": "git", - "url": "https://github.com/Maatwebsite/Laravel-Excel.git", - "reference": "f5540c4ba3ac50cebd98b09ca42e61f926ef299f" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/Maatwebsite/Laravel-Excel/zipball/f5540c4ba3ac50cebd98b09ca42e61f926ef299f", - "reference": "f5540c4ba3ac50cebd98b09ca42e61f926ef299f", - "shasum": "" - }, - "require": { - "illuminate/cache": "^5.0", - "illuminate/config": "^5.0", - "illuminate/filesystem": "^5.0", - "illuminate/support": "^5.0", - "jeremeamia/superclosure": "^2.3", - "nesbot/carbon": "~1.0", - "php": ">=5.5", - "phpoffice/phpexcel": "^1.8.1", - "tijsverkoyen/css-to-inline-styles": "~2.0" - }, - "require-dev": { - "mockery/mockery": "~1.0", - "orchestra/testbench": "3.1.*|3.2.*|3.3.*|3.4.*|3.5.*|3.6.*", - "phpseclib/phpseclib": "~1.0", - "phpunit/phpunit": "~4.0" - }, - "suggest": { - "illuminate/http": "^5.0", - "illuminate/queue": "^5.0", - "illuminate/routing": "^5.0", - "illuminate/view": "^5.0" - }, - "type": "library", - "extra": { - "laravel": { - "providers": [ - "Maatwebsite\\Excel\\ExcelServiceProvider" - ], - "aliases": { - "Excel": "Maatwebsite\\Excel\\Facades\\Excel" - } - } - }, - "autoload": { - "classmap": [ - "src/Maatwebsite/Excel" - ], - "psr-0": { - "Maatwebsite\\Excel\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Maatwebsite.nl", - "email": "patrick@maatwebsite.nl" - } - ], - "description": "Supercharged Excel exports in Laravel", - "keywords": [ - "PHPExcel", - "batch", - "csv", - "excel", - "export", - "import", - "laravel" - ], - "time": "2018-09-04T19:00:09+00:00" - }, - { - "name": "maennchen/zipstream-php", - "version": "v0.5.2", - "source": { - "type": "git", - "url": "https://github.com/maennchen/ZipStream-PHP.git", - "reference": "95922b6324955974675fd4923f987faa598408af" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/maennchen/ZipStream-PHP/zipball/95922b6324955974675fd4923f987faa598408af", - "reference": "95922b6324955974675fd4923f987faa598408af", - "shasum": "" - }, - "require": { - "ext-mbstring": "*", - "php": ">= 7.0" - }, - "require-dev": { - "phpunit/phpunit": "^6.3" - }, - "type": "library", - "autoload": { - "psr-4": { - "ZipStream\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Paul Duncan", - "email": "pabs@pablotron.org" - }, - { - "name": "Jesse Donat", - "email": "donatj@gmail.com" - }, - { - "name": "Jonatan Männchen", - "email": "jonatan@maennchen.ch" - } - ], - "description": "ZipStream is a library for dynamically streaming dynamic zip files from PHP without writing to the disk at all on the server.", - "keywords": [ - "stream", - "zip" - ], - "time": "2018-02-09T09:26:57+00:00" - }, - { - "name": "milon/barcode", - "version": "5.3.6", - "source": { - "type": "git", - "url": "https://github.com/milon/barcode.git", - "reference": "ca2f3efbf46142ff7f7afe3b0f3660ea4a067576" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/milon/barcode/zipball/ca2f3efbf46142ff7f7afe3b0f3660ea4a067576", - "reference": "ca2f3efbf46142ff7f7afe3b0f3660ea4a067576", - "shasum": "" - }, - "require": { - "illuminate/support": "5.*", - "php": ">=5.6.0" - }, - "type": "library", - "autoload": { - "psr-0": { - "Milon\\Barcode": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "LGPL-3.0" - ], - "authors": [ - { - "name": "Nuruzzaman Milon", - "email": "contact@milon.im" - } - ], - "description": "Barcode generator like Qr Code , PDF417,C39, C39+,C39E,C39E+,C93,S25,S25+,I25,I25+,C128,C128A,C128B,C128C,2-Digits UPC-Based Extention,5-Digits UPC-Based Extention,EAN 8,EAN 13,UPC-A,UPC-E,MSI (Variation of Plessey code) ", - "keywords": [ - "CODABAR", - "CODE 128", - "CODE 39", - "barcode", - "datamatrix", - "ean", - "laravel", - "pdf417", - "qr code", - "qrcode" - ], - "time": "2017-07-28T00:33:38+00:00" - }, - { - "name": "monolog/monolog", - "version": "1.24.0", - "source": { - "type": "git", - "url": "https://github.com/Seldaek/monolog.git", - "reference": "bfc9ebb28f97e7a24c45bdc3f0ff482e47bb0266" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/Seldaek/monolog/zipball/bfc9ebb28f97e7a24c45bdc3f0ff482e47bb0266", - "reference": "bfc9ebb28f97e7a24c45bdc3f0ff482e47bb0266", - "shasum": "" - }, - "require": { - "php": ">=5.3.0", - "psr/log": "~1.0" - }, - "provide": { - "psr/log-implementation": "1.0.0" - }, - "require-dev": { - "aws/aws-sdk-php": "^2.4.9 || ^3.0", - "doctrine/couchdb": "~1.0@dev", - "graylog2/gelf-php": "~1.0", - "jakub-onderka/php-parallel-lint": "0.9", - "php-amqplib/php-amqplib": "~2.4", - "php-console/php-console": "^3.1.3", - "phpunit/phpunit": "~4.5", - "phpunit/phpunit-mock-objects": "2.3.0", - "ruflin/elastica": ">=0.90 <3.0", - "sentry/sentry": "^0.13", - "swiftmailer/swiftmailer": "^5.3|^6.0" - }, - "suggest": { - "aws/aws-sdk-php": "Allow sending log messages to AWS services like DynamoDB", - "doctrine/couchdb": "Allow sending log messages to a CouchDB server", - "ext-amqp": "Allow sending log messages to an AMQP server (1.0+ required)", - "ext-mongo": "Allow sending log messages to a MongoDB server", - "graylog2/gelf-php": "Allow sending log messages to a GrayLog2 server", - "mongodb/mongodb": "Allow sending log messages to a MongoDB server via PHP Driver", - "php-amqplib/php-amqplib": "Allow sending log messages to an AMQP server using php-amqplib", - "php-console/php-console": "Allow sending log messages to Google Chrome", - "rollbar/rollbar": "Allow sending log messages to Rollbar", - "ruflin/elastica": "Allow sending log messages to an Elastic Search server", - "sentry/sentry": "Allow sending log messages to a Sentry server" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.0.x-dev" - } - }, - "autoload": { - "psr-4": { - "Monolog\\": "src/Monolog" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Jordi Boggiano", - "email": "j.boggiano@seld.be", - "homepage": "http://seld.be" - } - ], - "description": "Sends your logs to files, sockets, inboxes, databases and various web services", - "homepage": "http://github.com/Seldaek/monolog", - "keywords": [ - "log", - "logging", - "psr-3" - ], - "time": "2018-11-05T09:00:11+00:00" - }, - { - "name": "mpdf/mpdf", - "version": "v7.1.6", - "source": { - "type": "git", - "url": "https://github.com/mpdf/mpdf.git", - "reference": "ef5d8cf2c63def40fb76fc0a9e286721cb4dffcd" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/mpdf/mpdf/zipball/ef5d8cf2c63def40fb76fc0a9e286721cb4dffcd", - "reference": "ef5d8cf2c63def40fb76fc0a9e286721cb4dffcd", - "shasum": "" - }, - "require": { - "ext-gd": "*", - "ext-mbstring": "*", - "myclabs/deep-copy": "^1.7", - "paragonie/random_compat": "^1.4|^2.0|9.99.99", - "php": "^5.6 || ~7.0.0 || ~7.1.0 || ~7.2.0", - "psr/log": "^1.0", - "setasign/fpdi": "1.6.*" - }, - "require-dev": { - "mockery/mockery": "^0.9.5", - "phpunit/phpunit": "^5.0", - "squizlabs/php_codesniffer": "^2.7.0", - "tracy/tracy": "^2.4" - }, - "suggest": { - "ext-bcmath": "Needed for generation of some types of barcodes", - "ext-xml": "Needed mainly for SVG manipulation", - "ext-zlib": "Needed for compression of embedded resources, such as fonts" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-development": "7.x-dev" - } - }, - "autoload": { - "psr-4": { - "Mpdf\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "GPL-2.0-only" - ], - "authors": [ - { - "name": "Matěj Humpál", - "role": "Developer, maintainer" - }, - { - "name": "Ian Back", - "role": "Developer (retired)" - } - ], - "description": "A PHP class to generate PDF files from HTML with Unicode/UTF-8 and CJK support", - "homepage": "https://mpdf.github.io", - "keywords": [ - "pdf", - "php", - "utf-8" - ], - "time": "2018-10-18T11:37:12+00:00" - }, - { - "name": "myclabs/deep-copy", - "version": "1.9.3", - "source": { - "type": "git", - "url": "https://github.com/myclabs/DeepCopy.git", - "reference": "007c053ae6f31bba39dfa19a7726f56e9763bbea" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/007c053ae6f31bba39dfa19a7726f56e9763bbea", - "reference": "007c053ae6f31bba39dfa19a7726f56e9763bbea", - "shasum": "" - }, - "require": { - "php": "^7.1" - }, - "replace": { - "myclabs/deep-copy": "self.version" - }, - "require-dev": { - "doctrine/collections": "^1.0", - "doctrine/common": "^2.6", - "phpunit/phpunit": "^7.1" - }, - "type": "library", - "autoload": { - "psr-4": { - "DeepCopy\\": "src/DeepCopy/" - }, - "files": [ - "src/DeepCopy/deep_copy.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "description": "Create deep copies (clones) of your objects", - "keywords": [ - "clone", - "copy", - "duplicate", - "object", - "object graph" - ], - "time": "2019-08-09T12:45:53+00:00" - }, - { - "name": "nahid/apiz", - "version": "v3.1.0", - "source": { - "type": "git", - "url": "https://github.com/nahid/apiz.git", - "reference": "64197488b4df1fba8d756fd643d22d6a1232ccfd" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/nahid/apiz/zipball/64197488b4df1fba8d756fd643d22d6a1232ccfd", - "reference": "64197488b4df1fba8d756fd643d22d6a1232ccfd", - "shasum": "" - }, - "require": { - "ext-json": "*", - "guzzlehttp/guzzle": "^6.4", - "guzzlehttp/psr7": "^1.6", - "lib-libxml": ">=2.6.20", - "nahid/qarray": "^1.2", - "php": ">=5.5.9 | >=7.0" - }, - "require-dev": { - "phpunit/phpunit": "^6.2", - "symfony/var-dumper": "^3.4" - }, - "suggest": { - "ext-curl": "*", - "ext-libxml": "*", - "ext-simplexml": "*", - "ext-yaml": "*" - }, - "type": "php", - "autoload": { - "psr-4": { - "Apiz\\": "src/" - }, - "files": [] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nahid Bin Azhar", - "email": "nahid.dns@gmail.com" - } - ], - "description": "Apiz is a boilerplate for REST API manager", - "time": "2019-10-30T05:53:11+00:00" - }, - { - "name": "nahid/presento", - "version": "v1.0.2", - "source": { - "type": "git", - "url": "https://github.com/nahid/presento.git", - "reference": "f8dcb2c8dbbc73b81d75df176257910c7db5c5a6" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/nahid/presento/zipball/f8dcb2c8dbbc73b81d75df176257910c7db5c5a6", - "reference": "f8dcb2c8dbbc73b81d75df176257910c7db5c5a6", - "shasum": "" - }, - "require": { - "ext-json": "*", - "php": ">=7.0" - }, - "require-dev": { - "symfony/var-dumper": "4.4.x-dev" - }, - "type": "library", - "autoload": { - "files": [ - "helpers/presento.php" - ], - "psr-4": { - "Nahid\\Presento\\": "src/", - "Example\\": "example/" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nahid Bin Azhar", - "email": "nahid.dns@gmail.com" - } - ], - "description": "Presento is a package for PHP data presenter", - "time": "2019-10-17T12:03:12+00:00" - }, - { - "name": "nahid/qarray", - "version": "v1.2.0", - "source": { - "type": "git", - "url": "https://github.com/nahid/qarray.git", - "reference": "885a13460f0f72d5bf5aee9a33daf05a328f5e13" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/nahid/qarray/zipball/885a13460f0f72d5bf5aee9a33daf05a328f5e13", - "reference": "885a13460f0f72d5bf5aee9a33daf05a328f5e13", - "shasum": "" - }, - "require": { - "myclabs/deep-copy": "^1.8", - "php": ">=5.6.0" - }, - "require-dev": { - "phpunit/phpunit": "^4.8 || ^5.0", - "symfony/var-dumper": "^3.4" - }, - "type": "library", - "autoload": { - "psr-4": { - "Nahid\\QArray\\": "src/" - }, - "files": [ - "helpers/qarray.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nahid Bin Azhar", - "email": "nahid.dns@gmail.com" - } - ], - "description": "QArray is a PHP abstraction for quering array", - "homepage": "https://github.com/nahid/qarray", - "keywords": [ - "array", - "php", - "query" - ], - "time": "2019-10-30T06:25:33+00:00" - }, - { - "name": "namshi/jose", - "version": "7.2.3", - "source": { - "type": "git", - "url": "https://github.com/namshi/jose.git", - "reference": "89a24d7eb3040e285dd5925fcad992378b82bcff" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/namshi/jose/zipball/89a24d7eb3040e285dd5925fcad992378b82bcff", - "reference": "89a24d7eb3040e285dd5925fcad992378b82bcff", - "shasum": "" - }, - "require": { - "ext-date": "*", - "ext-hash": "*", - "ext-json": "*", - "ext-pcre": "*", - "ext-spl": "*", - "php": ">=5.5", - "symfony/polyfill-php56": "^1.0" - }, - "require-dev": { - "phpseclib/phpseclib": "^2.0", - "phpunit/phpunit": "^4.5|^5.0", - "satooshi/php-coveralls": "^1.0" - }, - "suggest": { - "ext-openssl": "Allows to use OpenSSL as crypto engine.", - "phpseclib/phpseclib": "Allows to use Phpseclib as crypto engine, use version ^2.0." - }, - "type": "library", - "autoload": { - "psr-4": { - "Namshi\\JOSE\\": "src/Namshi/JOSE/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Alessandro Nadalin", - "email": "alessandro.nadalin@gmail.com" - }, - { - "name": "Alessandro Cinelli (cirpo)", - "email": "alessandro.cinelli@gmail.com" - } - ], - "description": "JSON Object Signing and Encryption library for PHP.", - "keywords": [ - "JSON Web Signature", - "JSON Web Token", - "JWS", - "json", - "jwt", - "token" - ], - "time": "2016-12-05T07:27:31+00:00" - }, - { - "name": "nesbot/carbon", - "version": "1.25.0", - "source": { - "type": "git", - "url": "https://github.com/briannesbitt/Carbon.git", - "reference": "cbcf13da0b531767e39eb86e9687f5deba9857b4" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/cbcf13da0b531767e39eb86e9687f5deba9857b4", - "reference": "cbcf13da0b531767e39eb86e9687f5deba9857b4", - "shasum": "" - }, - "require": { - "php": ">=5.3.9", - "symfony/translation": "~2.6 || ~3.0 || ~4.0" - }, - "require-dev": { - "friendsofphp/php-cs-fixer": "~2", - "phpunit/phpunit": "^4.8.35 || ^5.7" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.23-dev" - } - }, - "autoload": { - "psr-4": { - "Carbon\\": "src/Carbon/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Brian Nesbitt", - "email": "brian@nesbot.com", - "homepage": "http://nesbot.com" - } - ], - "description": "A simple API extension for DateTime.", - "homepage": "http://carbon.nesbot.com", - "keywords": [ - "date", - "datetime", - "time" - ], - "time": "2018-03-19T15:50:49+00:00" - }, - { - "name": "nikic/php-parser", - "version": "v4.1.0", - "source": { - "type": "git", - "url": "https://github.com/nikic/PHP-Parser.git", - "reference": "d0230c5c77a7e3cfa69446febf340978540958c0" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/d0230c5c77a7e3cfa69446febf340978540958c0", - "reference": "d0230c5c77a7e3cfa69446febf340978540958c0", - "shasum": "" - }, - "require": { - "ext-tokenizer": "*", - "php": ">=7.0" - }, - "require-dev": { - "phpunit/phpunit": "^6.5 || ^7.0" - }, - "bin": [ - "bin/php-parse" - ], - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.1-dev" - } - }, - "autoload": { - "psr-4": { - "PhpParser\\": "lib/PhpParser" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Nikita Popov" - } - ], - "description": "A PHP parser written in PHP", - "keywords": [ - "parser", - "php" - ], - "time": "2018-10-10T09:24:14+00:00" - }, - { - "name": "ocramius/package-versions", - "version": "1.4.0", - "source": { - "type": "git", - "url": "https://github.com/Ocramius/PackageVersions.git", - "reference": "a4d4b60d0e60da2487bd21a2c6ac089f85570dbb" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/Ocramius/PackageVersions/zipball/a4d4b60d0e60da2487bd21a2c6ac089f85570dbb", - "reference": "a4d4b60d0e60da2487bd21a2c6ac089f85570dbb", - "shasum": "" - }, - "require": { - "composer-plugin-api": "^1.0.0", - "php": "^7.1.0" - }, - "require-dev": { - "composer/composer": "^1.6.3", - "doctrine/coding-standard": "^5.0.1", - "ext-zip": "*", - "infection/infection": "^0.7.1", - "phpunit/phpunit": "^7.0.0" - }, - "type": "composer-plugin", - "extra": { - "class": "PackageVersions\\Installer", - "branch-alias": { - "dev-master": "2.0.x-dev" - } - }, - "autoload": { - "psr-4": { - "PackageVersions\\": "src/PackageVersions" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Marco Pivetta", - "email": "ocramius@gmail.com" - } - ], - "description": "Composer plugin that provides efficient querying for installed package versions (no runtime IO)", - "time": "2019-02-21T12:16:21+00:00" - }, - { - "name": "paragonie/random_compat", - "version": "v9.99.99", - "source": { - "type": "git", - "url": "https://github.com/paragonie/random_compat.git", - "reference": "84b4dfb120c6f9b4ff7b3685f9b8f1aa365a0c95" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/paragonie/random_compat/zipball/84b4dfb120c6f9b4ff7b3685f9b8f1aa365a0c95", - "reference": "84b4dfb120c6f9b4ff7b3685f9b8f1aa365a0c95", - "shasum": "" - }, - "require": { - "php": "^7" - }, - "require-dev": { - "phpunit/phpunit": "4.*|5.*", - "vimeo/psalm": "^1" - }, - "suggest": { - "ext-libsodium": "Provides a modern crypto API that can be used to generate random bytes." - }, - "type": "library", - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Paragon Initiative Enterprises", - "email": "security@paragonie.com", - "homepage": "https://paragonie.com" - } - ], - "description": "PHP 5.x polyfill for random_bytes() and random_int() from PHP 7", - "keywords": [ - "csprng", - "polyfill", - "pseudorandom", - "random" - ], - "time": "2018-07-02T15:55:56+00:00" - }, - { - "name": "php-http/client-common", - "version": "2.0.0", - "source": { - "type": "git", - "url": "https://github.com/php-http/client-common.git", - "reference": "2b8aa3c4910afc21146a9c8f96adb266e869517a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-http/client-common/zipball/2b8aa3c4910afc21146a9c8f96adb266e869517a", - "reference": "2b8aa3c4910afc21146a9c8f96adb266e869517a", - "shasum": "" - }, - "require": { - "php": "^7.1", - "php-http/httplug": "^2.0", - "php-http/message": "^1.6", - "php-http/message-factory": "^1.0", - "symfony/options-resolver": " ^3.4.20 || ^4.0.15 || ^4.1.9 || ^4.2.1" - }, - "require-dev": { - "doctrine/instantiator": "^1.1", - "guzzlehttp/psr7": "^1.4", - "phpspec/phpspec": "^5.1", - "phpspec/prophecy": "^1.8", - "sebastian/comparator": "^3.0" - }, - "suggest": { - "ext-json": "To detect JSON responses with the ContentTypePlugin", - "ext-libxml": "To detect XML responses with the ContentTypePlugin", - "php-http/cache-plugin": "PSR-6 Cache plugin", - "php-http/logger-plugin": "PSR-3 Logger plugin", - "php-http/stopwatch-plugin": "Symfony Stopwatch plugin" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.0.x-dev" - } - }, - "autoload": { - "psr-4": { - "Http\\Client\\Common\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Márk Sági-Kazár", - "email": "mark.sagikazar@gmail.com" - } - ], - "description": "Common HTTP Client implementations and tools for HTTPlug", - "homepage": "http://httplug.io", - "keywords": [ - "client", - "common", - "http", - "httplug" - ], - "time": "2019-02-03T16:49:09+00:00" - }, - { - "name": "php-http/curl-client", - "version": "2.0.0", - "source": { - "type": "git", - "url": "https://github.com/php-http/curl-client.git", - "reference": "e7a2a5ebcce1ff7d75eaf02b7c85634a6fac00da" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-http/curl-client/zipball/e7a2a5ebcce1ff7d75eaf02b7c85634a6fac00da", - "reference": "e7a2a5ebcce1ff7d75eaf02b7c85634a6fac00da", - "shasum": "" - }, - "require": { - "ext-curl": "*", - "php": "^7.1", - "php-http/discovery": "^1.6", - "php-http/httplug": "^2.0", - "php-http/message": "^1.2", - "psr/http-client": "^1.0", - "psr/http-factory": "^1.0", - "symfony/options-resolver": "^3.4 || ^4.0" - }, - "provide": { - "php-http/async-client-implementation": "1.0", - "php-http/client-implementation": "1.0" - }, - "require-dev": { - "guzzlehttp/psr7": "^1.0", - "php-http/client-integration-tests": "^2.0", - "phpunit/phpunit": "^7.5", - "zendframework/zend-diactoros": "^2.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.x-dev" - } - }, - "autoload": { - "psr-4": { - "Http\\Client\\Curl\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Михаил Красильников", - "email": "m.krasilnikov@yandex.ru" - } - ], - "description": "PSR-18 and HTTPlug Async client with cURL", - "homepage": "http://php-http.org", - "keywords": [ - "curl", - "http", - "psr-18" - ], - "time": "2019-03-05T19:59:23+00:00" - }, - { - "name": "php-http/discovery", - "version": "1.7.0", - "source": { - "type": "git", - "url": "https://github.com/php-http/discovery.git", - "reference": "e822f86a6983790aa17ab13aa7e69631e86806b6" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-http/discovery/zipball/e822f86a6983790aa17ab13aa7e69631e86806b6", - "reference": "e822f86a6983790aa17ab13aa7e69631e86806b6", - "shasum": "" - }, - "require": { - "php": "^7.1" - }, - "conflict": { - "nyholm/psr7": "<1.0" - }, - "require-dev": { - "akeneo/phpspec-skip-example-extension": "^4.0", - "php-http/httplug": "^1.0 || ^2.0", - "php-http/message-factory": "^1.0", - "phpspec/phpspec": "^5.1", - "puli/composer-plugin": "1.0.0-beta10" - }, - "suggest": { - "php-http/message": "Allow to use Guzzle, Diactoros or Slim Framework factories", - "puli/composer-plugin": "Sets up Puli which is recommended for Discovery to work. Check http://docs.php-http.org/en/latest/discovery.html for more details." - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.7-dev" - } - }, - "autoload": { - "psr-4": { - "Http\\Discovery\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Márk Sági-Kazár", - "email": "mark.sagikazar@gmail.com" - } - ], - "description": "Finds installed HTTPlug implementations and PSR-7 message factories", - "homepage": "http://php-http.org", - "keywords": [ - "adapter", - "client", - "discovery", - "factory", - "http", - "message", - "psr7" - ], - "time": "2019-06-30T09:04:27+00:00" - }, - { - "name": "php-http/httplug", - "version": "v2.0.0", - "source": { - "type": "git", - "url": "https://github.com/php-http/httplug.git", - "reference": "b3842537338c949f2469557ef4ad4bdc47b58603" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-http/httplug/zipball/b3842537338c949f2469557ef4ad4bdc47b58603", - "reference": "b3842537338c949f2469557ef4ad4bdc47b58603", - "shasum": "" - }, - "require": { - "php": "^7.0", - "php-http/promise": "^1.0", - "psr/http-client": "^1.0", - "psr/http-message": "^1.0" - }, - "require-dev": { - "henrikbjorn/phpspec-code-coverage": "^1.0", - "phpspec/phpspec": "^2.4" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.0.x-dev" - } - }, - "autoload": { - "psr-4": { - "Http\\Client\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Eric GELOEN", - "email": "geloen.eric@gmail.com" - }, - { - "name": "Márk Sági-Kazár", - "email": "mark.sagikazar@gmail.com" - } - ], - "description": "HTTPlug, the HTTP client abstraction for PHP", - "homepage": "http://httplug.io", - "keywords": [ - "client", - "http" - ], - "time": "2018-10-31T09:14:44+00:00" - }, - { - "name": "php-http/message", - "version": "1.7.2", - "source": { - "type": "git", - "url": "https://github.com/php-http/message.git", - "reference": "b159ffe570dffd335e22ef0b91a946eacb182fa1" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-http/message/zipball/b159ffe570dffd335e22ef0b91a946eacb182fa1", - "reference": "b159ffe570dffd335e22ef0b91a946eacb182fa1", - "shasum": "" - }, - "require": { - "clue/stream-filter": "^1.4", - "php": "^5.4 || ^7.0", - "php-http/message-factory": "^1.0.2", - "psr/http-message": "^1.0" - }, - "provide": { - "php-http/message-factory-implementation": "1.0" - }, - "require-dev": { - "akeneo/phpspec-skip-example-extension": "^1.0", - "coduo/phpspec-data-provider-extension": "^1.0", - "ext-zlib": "*", - "guzzlehttp/psr7": "^1.0", - "henrikbjorn/phpspec-code-coverage": "^1.0", - "phpspec/phpspec": "^2.4", - "slim/slim": "^3.0", - "zendframework/zend-diactoros": "^1.0" - }, - "suggest": { - "ext-zlib": "Used with compressor/decompressor streams", - "guzzlehttp/psr7": "Used with Guzzle PSR-7 Factories", - "slim/slim": "Used with Slim Framework PSR-7 implementation", - "zendframework/zend-diactoros": "Used with Diactoros Factories" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.6-dev" - } - }, - "autoload": { - "psr-4": { - "Http\\Message\\": "src/" - }, - "files": [ - "src/filters.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Márk Sági-Kazár", - "email": "mark.sagikazar@gmail.com" - } - ], - "description": "HTTP Message related tools", - "homepage": "http://php-http.org", - "keywords": [ - "http", - "message", - "psr-7" - ], - "time": "2018-11-01T09:32:41+00:00" - }, - { - "name": "php-http/message-factory", - "version": "v1.0.2", - "source": { - "type": "git", - "url": "https://github.com/php-http/message-factory.git", - "reference": "a478cb11f66a6ac48d8954216cfed9aa06a501a1" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-http/message-factory/zipball/a478cb11f66a6ac48d8954216cfed9aa06a501a1", - "reference": "a478cb11f66a6ac48d8954216cfed9aa06a501a1", - "shasum": "" - }, - "require": { - "php": ">=5.4", - "psr/http-message": "^1.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0-dev" - } - }, - "autoload": { - "psr-4": { - "Http\\Message\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Márk Sági-Kazár", - "email": "mark.sagikazar@gmail.com" - } - ], - "description": "Factory interfaces for PSR-7 HTTP Message", - "homepage": "http://php-http.org", - "keywords": [ - "factory", - "http", - "message", - "stream", - "uri" - ], - "time": "2015-12-19T14:08:53+00:00" - }, - { - "name": "php-http/promise", - "version": "v1.0.0", - "source": { - "type": "git", - "url": "https://github.com/php-http/promise.git", - "reference": "dc494cdc9d7160b9a09bd5573272195242ce7980" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-http/promise/zipball/dc494cdc9d7160b9a09bd5573272195242ce7980", - "reference": "dc494cdc9d7160b9a09bd5573272195242ce7980", - "shasum": "" - }, - "require-dev": { - "henrikbjorn/phpspec-code-coverage": "^1.0", - "phpspec/phpspec": "^2.4" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.1-dev" - } - }, - "autoload": { - "psr-4": { - "Http\\Promise\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Márk Sági-Kazár", - "email": "mark.sagikazar@gmail.com" - }, - { - "name": "Joel Wurtz", - "email": "joel.wurtz@gmail.com" - } - ], - "description": "Promise used for asynchronous HTTP requests", - "homepage": "http://httplug.io", - "keywords": [ - "promise" - ], - "time": "2016-01-26T13:27:02+00:00" - }, - { - "name": "phpoffice/phpexcel", - "version": "1.8.2", - "source": { - "type": "git", - "url": "https://github.com/PHPOffice/PHPExcel.git", - "reference": "1441011fb7ecdd8cc689878f54f8b58a6805f870" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/PHPOffice/PHPExcel/zipball/1441011fb7ecdd8cc689878f54f8b58a6805f870", - "reference": "1441011fb7ecdd8cc689878f54f8b58a6805f870", - "shasum": "" - }, - "require": { - "ext-mbstring": "*", - "ext-xml": "*", - "ext-xmlwriter": "*", - "php": "^5.2|^7.0" - }, - "require-dev": { - "squizlabs/php_codesniffer": "2.*" - }, - "type": "library", - "autoload": { - "psr-0": { - "PHPExcel": "Classes/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "LGPL-2.1" - ], - "authors": [ - { - "name": "Maarten Balliauw", - "homepage": "http://blog.maartenballiauw.be" - }, - { - "name": "Erik Tilt" - }, - { - "name": "Franck Lefevre", - "homepage": "http://rootslabs.net" - }, - { - "name": "Mark Baker", - "homepage": "http://markbakeruk.net" - } - ], - "description": "PHPExcel - OpenXML - Read, Create and Write Spreadsheet documents in PHP - Spreadsheet engine", - "homepage": "https://github.com/PHPOffice/PHPExcel", - "keywords": [ - "OpenXML", - "excel", - "php", - "spreadsheet", - "xls", - "xlsx" - ], - "abandoned": "phpoffice/phpspreadsheet", - "time": "2018-11-22T23:07:24+00:00" - }, - { - "name": "phpoffice/phpspreadsheet", - "version": "1.1.0", - "source": { - "type": "git", - "url": "https://github.com/PHPOffice/PhpSpreadsheet.git", - "reference": "a2771e562e3a17c0d512d2009e38fd628beece90" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/PHPOffice/PhpSpreadsheet/zipball/a2771e562e3a17c0d512d2009e38fd628beece90", - "reference": "a2771e562e3a17c0d512d2009e38fd628beece90", - "shasum": "" - }, - "require": { - "ext-ctype": "*", - "ext-dom": "*", - "ext-gd": "*", - "ext-iconv": "*", - "ext-libxml": "*", - "ext-mbstring": "*", - "ext-simplexml": "*", - "ext-xml": "*", - "ext-xmlreader": "*", - "ext-xmlwriter": "*", - "ext-zip": "*", - "ext-zlib": "*", - "php": "^5.6|^7.0", - "psr/simple-cache": "^1.0" - }, - "require-dev": { - "dompdf/dompdf": "^0.8.0", - "friendsofphp/php-cs-fixer": "@stable", - "jpgraph/jpgraph": "^4.0", - "mpdf/mpdf": "^7.0.0", - "phpunit/phpunit": "^5.7", - "squizlabs/php_codesniffer": "^2.7", - "tecnickcom/tcpdf": "^6.2" - }, - "suggest": { - "dompdf/dompdf": "Option for rendering PDF with PDF Writer", - "ext-dom": "Option to read and write HTML files", - "ext-gd": "Required for exact column width autocalculation", - "jpgraph/jpgraph": "Option for rendering charts, or including charts with PDF or HTML Writers", - "mpdf/mpdf": "Option for rendering PDF with PDF Writer", - "tecnick.com/tcpdf": "Option for rendering PDF with PDF Writer" - }, - "type": "library", - "autoload": { - "psr-4": { - "PhpOffice\\PhpSpreadsheet\\": "src/PhpSpreadsheet" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "LGPL-2.1" - ], - "authors": [ - { - "name": "Maarten Balliauw", - "homepage": "http://blog.maartenballiauw.be" - }, - { - "name": "Erik Tilt" - }, - { - "name": "Franck Lefevre", - "homepage": "http://rootslabs.net" - }, - { - "name": "Mark Baker", - "homepage": "http://markbakeruk.net" - } - ], - "description": "PHPSpreadsheet - Read, Create and Write Spreadsheet documents in PHP - Spreadsheet engine", - "homepage": "https://github.com/PHPOffice/PhpSpreadsheet", - "keywords": [ - "OpenXML", - "excel", - "gnumeric", - "ods", - "php", - "spreadsheet", - "xls", - "xlsx" - ], - "time": "2018-01-28T12:37:15+00:00" - }, - { - "name": "predis/predis", - "version": "v1.1.1", - "source": { - "type": "git", - "url": "https://github.com/nrk/predis.git", - "reference": "f0210e38881631afeafb56ab43405a92cafd9fd1" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/nrk/predis/zipball/f0210e38881631afeafb56ab43405a92cafd9fd1", - "reference": "f0210e38881631afeafb56ab43405a92cafd9fd1", - "shasum": "" - }, - "require": { - "php": ">=5.3.9" - }, - "require-dev": { - "phpunit/phpunit": "~4.8" - }, - "suggest": { - "ext-curl": "Allows access to Webdis when paired with phpiredis", - "ext-phpiredis": "Allows faster serialization and deserialization of the Redis protocol" - }, - "type": "library", - "autoload": { - "psr-4": { - "Predis\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Daniele Alessandri", - "email": "suppakilla@gmail.com", - "homepage": "http://clorophilla.net" - } - ], - "description": "Flexible and feature-complete Redis client for PHP and HHVM", - "homepage": "http://github.com/nrk/predis", - "keywords": [ - "nosql", - "predis", - "redis" - ], - "time": "2016-06-16T16:22:20+00:00" - }, - { - "name": "prologue/alerts", - "version": "0.4.2", - "source": { - "type": "git", - "url": "https://github.com/prologuephp/alerts.git", - "reference": "d3bf5d7ea480cbbf372bb7f80e23e193ce4862c7" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/prologuephp/alerts/zipball/d3bf5d7ea480cbbf372bb7f80e23e193ce4862c7", - "reference": "d3bf5d7ea480cbbf372bb7f80e23e193ce4862c7", - "shasum": "" - }, - "require": { - "illuminate/config": "~5", - "illuminate/session": "~5", - "illuminate/support": "~5", - "php": ">=5.4.0" - }, - "require-dev": { - "mockery/mockery": "~0.9", - "phpunit/phpunit": "~4.1" - }, - "type": "library", - "extra": { - "laravel": { - "providers": [ - "Prologue\\Alerts\\AlertsServiceProvider" - ], - "aliases": { - "Alert": "Prologue\\Alerts\\Facades\\Alert" - } - } - }, - "autoload": { - "psr-4": { - "Prologue\\Alerts\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Dries Vints", - "email": "dries.vints@gmail.com", - "homepage": "http://driesvints.com", - "role": "Maintainer" - } - ], - "description": "Prologue Alerts is a package that handles global site messages.", - "keywords": [ - "alerts", - "laravel", - "messages" - ], - "time": "2018-02-08T11:29:22+00:00" - }, - { - "name": "psr/cache", - "version": "1.0.1", - "source": { - "type": "git", - "url": "https://github.com/php-fig/cache.git", - "reference": "d11b50ad223250cf17b86e38383413f5a6764bf8" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/cache/zipball/d11b50ad223250cf17b86e38383413f5a6764bf8", - "reference": "d11b50ad223250cf17b86e38383413f5a6764bf8", - "shasum": "" - }, - "require": { - "php": ">=5.3.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev" - } - }, - "autoload": { - "psr-4": { - "Psr\\Cache\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "PHP-FIG", - "homepage": "http://www.php-fig.org/" - } - ], - "description": "Common interface for caching libraries", - "keywords": [ - "cache", - "psr", - "psr-6" - ], - "time": "2016-08-06T20:24:11+00:00" - }, - { - "name": "psr/container", - "version": "1.0.0", - "source": { - "type": "git", - "url": "https://github.com/php-fig/container.git", - "reference": "b7ce3b176482dbbc1245ebf52b181af44c2cf55f" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/container/zipball/b7ce3b176482dbbc1245ebf52b181af44c2cf55f", - "reference": "b7ce3b176482dbbc1245ebf52b181af44c2cf55f", - "shasum": "" - }, - "require": { - "php": ">=5.3.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev" - } - }, - "autoload": { - "psr-4": { - "Psr\\Container\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "PHP-FIG", - "homepage": "http://www.php-fig.org/" - } - ], - "description": "Common Container Interface (PHP FIG PSR-11)", - "homepage": "https://github.com/php-fig/container", - "keywords": [ - "PSR-11", - "container", - "container-interface", - "container-interop", - "psr" - ], - "time": "2017-02-14T16:28:37+00:00" - }, - { - "name": "psr/http-client", - "version": "1.0.0", - "source": { - "type": "git", - "url": "https://github.com/php-fig/http-client.git", - "reference": "496a823ef742b632934724bf769560c2a5c7c44e" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-client/zipball/496a823ef742b632934724bf769560c2a5c7c44e", - "reference": "496a823ef742b632934724bf769560c2a5c7c44e", - "shasum": "" - }, - "require": { - "php": "^7.0", - "psr/http-message": "^1.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev" - } - }, - "autoload": { - "psr-4": { - "Psr\\Http\\Client\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "PHP-FIG", - "homepage": "http://www.php-fig.org/" - } - ], - "description": "Common interface for HTTP clients", - "homepage": "https://github.com/php-fig/http-client", - "keywords": [ - "http", - "http-client", - "psr", - "psr-18" - ], - "time": "2018-10-30T23:29:13+00:00" - }, - { - "name": "psr/http-factory", - "version": "1.0.1", - "source": { - "type": "git", - "url": "https://github.com/php-fig/http-factory.git", - "reference": "12ac7fcd07e5b077433f5f2bee95b3a771bf61be" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-factory/zipball/12ac7fcd07e5b077433f5f2bee95b3a771bf61be", - "reference": "12ac7fcd07e5b077433f5f2bee95b3a771bf61be", - "shasum": "" - }, - "require": { - "php": ">=7.0.0", - "psr/http-message": "^1.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev" - } - }, - "autoload": { - "psr-4": { - "Psr\\Http\\Message\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "PHP-FIG", - "homepage": "http://www.php-fig.org/" - } - ], - "description": "Common interfaces for PSR-7 HTTP message factories", - "keywords": [ - "factory", - "http", - "message", - "psr", - "psr-17", - "psr-7", - "request", - "response" - ], - "time": "2019-04-30T12:38:16+00:00" - }, - { - "name": "psr/http-message", - "version": "1.0.1", - "source": { - "type": "git", - "url": "https://github.com/php-fig/http-message.git", - "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-message/zipball/f6561bf28d520154e4b0ec72be95418abe6d9363", - "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363", - "shasum": "" - }, - "require": { - "php": ">=5.3.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev" - } - }, - "autoload": { - "psr-4": { - "Psr\\Http\\Message\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "PHP-FIG", - "homepage": "http://www.php-fig.org/" - } - ], - "description": "Common interface for HTTP messages", - "homepage": "https://github.com/php-fig/http-message", - "keywords": [ - "http", - "http-message", - "psr", - "psr-7", - "request", - "response" - ], - "time": "2016-08-06T14:39:51+00:00" - }, - { - "name": "psr/log", - "version": "1.1.0", - "source": { - "type": "git", - "url": "https://github.com/php-fig/log.git", - "reference": "6c001f1daafa3a3ac1d8ff69ee4db8e799a654dd" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/log/zipball/6c001f1daafa3a3ac1d8ff69ee4db8e799a654dd", - "reference": "6c001f1daafa3a3ac1d8ff69ee4db8e799a654dd", - "shasum": "" - }, - "require": { - "php": ">=5.3.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev" - } - }, - "autoload": { - "psr-4": { - "Psr\\Log\\": "Psr/Log/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "PHP-FIG", - "homepage": "http://www.php-fig.org/" - } - ], - "description": "Common interface for logging libraries", - "homepage": "https://github.com/php-fig/log", - "keywords": [ - "log", - "psr", - "psr-3" - ], - "time": "2018-11-20T15:27:04+00:00" - }, - { - "name": "psr/simple-cache", - "version": "1.0.1", - "source": { - "type": "git", - "url": "https://github.com/php-fig/simple-cache.git", - "reference": "408d5eafb83c57f6365a3ca330ff23aa4a5fa39b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/simple-cache/zipball/408d5eafb83c57f6365a3ca330ff23aa4a5fa39b", - "reference": "408d5eafb83c57f6365a3ca330ff23aa4a5fa39b", - "shasum": "" - }, - "require": { - "php": ">=5.3.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev" - } - }, - "autoload": { - "psr-4": { - "Psr\\SimpleCache\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "PHP-FIG", - "homepage": "http://www.php-fig.org/" - } - ], - "description": "Common interfaces for simple caching", - "keywords": [ - "cache", - "caching", - "psr", - "psr-16", - "simple-cache" - ], - "time": "2017-10-23T01:57:42+00:00" - }, - { - "name": "psy/psysh", - "version": "v0.9.9", - "source": { - "type": "git", - "url": "https://github.com/bobthecow/psysh.git", - "reference": "9aaf29575bb8293206bb0420c1e1c87ff2ffa94e" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/bobthecow/psysh/zipball/9aaf29575bb8293206bb0420c1e1c87ff2ffa94e", - "reference": "9aaf29575bb8293206bb0420c1e1c87ff2ffa94e", - "shasum": "" - }, - "require": { - "dnoegel/php-xdg-base-dir": "0.1", - "ext-json": "*", - "ext-tokenizer": "*", - "jakub-onderka/php-console-highlighter": "0.3.*|0.4.*", - "nikic/php-parser": "~1.3|~2.0|~3.0|~4.0", - "php": ">=5.4.0", - "symfony/console": "~2.3.10|^2.4.2|~3.0|~4.0", - "symfony/var-dumper": "~2.7|~3.0|~4.0" - }, - "require-dev": { - "bamarni/composer-bin-plugin": "^1.2", - "hoa/console": "~2.15|~3.16", - "phpunit/phpunit": "~4.8.35|~5.0|~6.0|~7.0" - }, - "suggest": { - "ext-pcntl": "Enabling the PCNTL extension makes PsySH a lot happier :)", - "ext-pdo-sqlite": "The doc command requires SQLite to work.", - "ext-posix": "If you have PCNTL, you'll want the POSIX extension as well.", - "ext-readline": "Enables support for arrow-key history navigation, and showing and manipulating command history.", - "hoa/console": "A pure PHP readline implementation. You'll want this if your PHP install doesn't already support readline or libedit." - }, - "bin": [ - "bin/psysh" - ], - "type": "library", - "extra": { - "branch-alias": { - "dev-develop": "0.9.x-dev" - } - }, - "autoload": { - "files": [ - "src/functions.php" - ], - "psr-4": { - "Psy\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Justin Hileman", - "email": "justin@justinhileman.info", - "homepage": "http://justinhileman.com" - } - ], - "description": "An interactive shell for modern PHP.", - "homepage": "http://psysh.org", - "keywords": [ - "REPL", - "console", - "interactive", - "shell" - ], - "time": "2018-10-13T15:16:03+00:00" - }, - { - "name": "ralouphie/getallheaders", - "version": "3.0.3", - "source": { - "type": "git", - "url": "https://github.com/ralouphie/getallheaders.git", - "reference": "120b605dfeb996808c31b6477290a714d356e822" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/ralouphie/getallheaders/zipball/120b605dfeb996808c31b6477290a714d356e822", - "reference": "120b605dfeb996808c31b6477290a714d356e822", - "shasum": "" - }, - "require": { - "php": ">=5.6" - }, - "require-dev": { - "php-coveralls/php-coveralls": "^2.1", - "phpunit/phpunit": "^5 || ^6.5" - }, - "type": "library", - "autoload": { - "files": [ - "src/getallheaders.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Ralph Khattar", - "email": "ralph.khattar@gmail.com" - } - ], - "description": "A polyfill for getallheaders.", - "time": "2019-03-08T08:55:37+00:00" - }, - { - "name": "ramsey/uuid", - "version": "3.8.0", - "source": { - "type": "git", - "url": "https://github.com/ramsey/uuid.git", - "reference": "d09ea80159c1929d75b3f9c60504d613aeb4a1e3" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/ramsey/uuid/zipball/d09ea80159c1929d75b3f9c60504d613aeb4a1e3", - "reference": "d09ea80159c1929d75b3f9c60504d613aeb4a1e3", - "shasum": "" - }, - "require": { - "paragonie/random_compat": "^1.0|^2.0|9.99.99", - "php": "^5.4 || ^7.0", - "symfony/polyfill-ctype": "^1.8" - }, - "replace": { - "rhumsaa/uuid": "self.version" - }, - "require-dev": { - "codeception/aspect-mock": "^1.0 | ~2.0.0", - "doctrine/annotations": "~1.2.0", - "goaop/framework": "1.0.0-alpha.2 | ^1.0 | ~2.1.0", - "ircmaxell/random-lib": "^1.1", - "jakub-onderka/php-parallel-lint": "^0.9.0", - "mockery/mockery": "^0.9.9", - "moontoast/math": "^1.1", - "php-mock/php-mock-phpunit": "^0.3|^1.1", - "phpunit/phpunit": "^4.7|^5.0|^6.5", - "squizlabs/php_codesniffer": "^2.3" - }, - "suggest": { - "ext-ctype": "Provides support for PHP Ctype functions", - "ext-libsodium": "Provides the PECL libsodium extension for use with the SodiumRandomGenerator", - "ext-uuid": "Provides the PECL UUID extension for use with the PeclUuidTimeGenerator and PeclUuidRandomGenerator", - "ircmaxell/random-lib": "Provides RandomLib for use with the RandomLibAdapter", - "moontoast/math": "Provides support for converting UUID to 128-bit integer (in string form).", - "ramsey/uuid-console": "A console application for generating UUIDs with ramsey/uuid", - "ramsey/uuid-doctrine": "Allows the use of Ramsey\\Uuid\\Uuid as Doctrine field type." - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.x-dev" - } - }, - "autoload": { - "psr-4": { - "Ramsey\\Uuid\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Marijn Huizendveld", - "email": "marijn.huizendveld@gmail.com" - }, - { - "name": "Thibaud Fabre", - "email": "thibaud@aztech.io" - }, - { - "name": "Ben Ramsey", - "email": "ben@benramsey.com", - "homepage": "https://benramsey.com" - } - ], - "description": "Formerly rhumsaa/uuid. A PHP 5.4+ library for generating RFC 4122 version 1, 3, 4, and 5 universally unique identifiers (UUID).", - "homepage": "https://github.com/ramsey/uuid", - "keywords": [ - "guid", - "identifier", - "uuid" - ], - "time": "2018-07-19T23:38:55+00:00" - }, - { - "name": "rap2hpoutre/laravel-log-viewer", - "version": "v0.22.1", - "source": { - "type": "git", - "url": "https://github.com/rap2hpoutre/laravel-log-viewer.git", - "reference": "fd0821b073771f3e7256664417055a8bbb091059" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/rap2hpoutre/laravel-log-viewer/zipball/fd0821b073771f3e7256664417055a8bbb091059", - "reference": "fd0821b073771f3e7256664417055a8bbb091059", - "shasum": "" - }, - "require": { - "illuminate/support": "4.2.*|5.*", - "php": ">=5.4.0" - }, - "require-dev": { - "orchestra/testbench": "^3.6", - "phpunit/phpunit": "^7" - }, - "type": "laravel-package", - "extra": { - "laravel": { - "providers": [ - "Rap2hpoutre\\LaravelLogViewer\\LaravelLogViewerServiceProvider" - ] - } - }, - "autoload": { - "classmap": [ - "src/controllers" - ], - "psr-0": { - "Rap2hpoutre\\LaravelLogViewer\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "rap2hpoutre", - "email": "raphaelht@gmail.com" - } - ], - "description": "A Laravel log reader", - "keywords": [ - "laravel", - "log", - "log-reader", - "log-viewer", - "logging", - "lumen" - ], - "time": "2018-10-01T09:01:30+00:00" - }, - { - "name": "react/promise", - "version": "v2.7.1", - "source": { - "type": "git", - "url": "https://github.com/reactphp/promise.git", - "reference": "31ffa96f8d2ed0341a57848cbb84d88b89dd664d" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/reactphp/promise/zipball/31ffa96f8d2ed0341a57848cbb84d88b89dd664d", - "reference": "31ffa96f8d2ed0341a57848cbb84d88b89dd664d", - "shasum": "" - }, - "require": { - "php": ">=5.4.0" - }, - "require-dev": { - "phpunit/phpunit": "~4.8" - }, - "type": "library", - "autoload": { - "psr-4": { - "React\\Promise\\": "src/" - }, - "files": [ - "src/functions_include.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Jan Sorgalla", - "email": "jsorgalla@gmail.com" - } - ], - "description": "A lightweight implementation of CommonJS Promises/A for PHP", - "keywords": [ - "promise", - "promises" - ], - "time": "2019-01-07T21:25:54+00:00" - }, - { - "name": "riimu/kit-phpencoder", - "version": "v2.4.0", - "source": { - "type": "git", - "url": "https://github.com/Riimu/Kit-PHPEncoder.git", - "reference": "7e876d25019c3f6c23321ab5ac1a55c72fcd0933" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/Riimu/Kit-PHPEncoder/zipball/7e876d25019c3f6c23321ab5ac1a55c72fcd0933", - "reference": "7e876d25019c3f6c23321ab5ac1a55c72fcd0933", - "shasum": "" - }, - "require": { - "php": ">=5.6.0" - }, - "require-dev": { - "phpunit/phpunit": "^7.2 || ^6.5 || ^5.7" - }, - "suggest": { - "ext-gmp": "To convert GMP numbers into PHP code" - }, - "type": "library", - "autoload": { - "psr-4": { - "Riimu\\Kit\\PHPEncoder\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Riikka Kalliomäki", - "email": "riikka.kalliomaki@gmail.com", - "homepage": "http://riimu.net" - } - ], - "description": "Highly customizable alternative to var_export for PHP code generation", - "homepage": "http://kit.riimu.net", - "keywords": [ - "code", - "encoder", - "export", - "generator", - "variable" - ], - "time": "2018-07-03T12:46:23+00:00" - }, - { - "name": "sentry/sdk", - "version": "2.0.3", - "source": { - "type": "git", - "url": "https://github.com/getsentry/sentry-php-sdk.git", - "reference": "91c36aec83e4c1c5801b64ef4927b78a5aa8ce7f" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/getsentry/sentry-php-sdk/zipball/91c36aec83e4c1c5801b64ef4927b78a5aa8ce7f", - "reference": "91c36aec83e4c1c5801b64ef4927b78a5aa8ce7f", - "shasum": "" - }, - "require": { - "http-interop/http-factory-guzzle": "^1.0", - "php-http/curl-client": "^1.0|^2.0", - "sentry/sentry": "^2.0.1" - }, - "type": "metapackage", - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Sentry", - "email": "accounts@sentry.io" - } - ], - "description": "This is a metapackage shipping sentry/sentry with a recommended http client.", - "time": "2019-04-08T07:21:45+00:00" - }, - { - "name": "sentry/sentry", - "version": "2.1.1", - "source": { - "type": "git", - "url": "https://github.com/getsentry/sentry-php.git", - "reference": "8e27e6c5fcf6f01fc2e5235dd14cc0b2b347d793" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/getsentry/sentry-php/zipball/8e27e6c5fcf6f01fc2e5235dd14cc0b2b347d793", - "reference": "8e27e6c5fcf6f01fc2e5235dd14cc0b2b347d793", - "shasum": "" - }, - "require": { - "ext-json": "*", - "ext-mbstring": "*", - "jean85/pretty-package-versions": "^1.2", - "php": "^7.1", - "php-http/async-client-implementation": "^1.0", - "php-http/client-common": "^1.5|^2.0", - "php-http/discovery": "^1.6.1", - "php-http/httplug": "^1.1|^2.0", - "php-http/message": "^1.5", - "psr/http-message-implementation": "^1.0", - "ramsey/uuid": "^3.3", - "symfony/options-resolver": "^2.7|^3.0|^4.0", - "zendframework/zend-diactoros": "^1.4|^2.0" - }, - "conflict": { - "php-http/client-common": "1.8.0", - "raven/raven": "*" - }, - "require-dev": { - "friendsofphp/php-cs-fixer": "^2.13", - "monolog/monolog": "^1.3|^2.0", - "php-http/mock-client": "^1.0", - "phpstan/phpstan": "^0.10.3", - "phpstan/phpstan-phpunit": "^0.10", - "phpunit/phpunit": "^7.0", - "symfony/phpunit-bridge": "^4.1.6" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.0.x-dev" - } - }, - "autoload": { - "files": [ - "src/Sdk.php" - ], - "psr-4": { - "Sentry\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sentry", - "email": "accounts@sentry.io" - } - ], - "description": "A PHP SDK for Sentry (http://sentry.io)", - "homepage": "http://sentry.io", - "keywords": [ - "crash-reporting", - "crash-reports", - "error-handler", - "error-monitoring", - "log", - "logging", - "sentry" - ], - "time": "2019-06-13T11:27:23+00:00" - }, - { - "name": "sentry/sentry-laravel", - "version": "1.1.0", - "source": { - "type": "git", - "url": "https://github.com/getsentry/sentry-laravel.git", - "reference": "1e5f644b62ee73424ad8316e37b9a2dcf7290de8" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/getsentry/sentry-laravel/zipball/1e5f644b62ee73424ad8316e37b9a2dcf7290de8", - "reference": "1e5f644b62ee73424ad8316e37b9a2dcf7290de8", - "shasum": "" - }, - "require": { - "illuminate/support": "5.0 - 5.8", - "php": "^7.1", - "sentry/sdk": "^2.0" - }, - "require-dev": { - "friendsofphp/php-cs-fixer": "2.14.*", - "laravel/framework": "5.8.*", - "orchestra/testbench": "3.8.*", - "phpunit/phpunit": "7.5.*" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev" - }, - "laravel": { - "providers": [ - "Sentry\\Laravel\\ServiceProvider" - ], - "aliases": { - "Sentry": "Sentry\\Laravel\\Facade" - } - } - }, - "autoload": { - "psr-0": { - "Sentry\\Laravel\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "Apache-2.0" - ], - "authors": [ - { - "name": "Sentry", - "email": "accounts@sentry.io" - } - ], - "description": "Laravel SDK for Sentry (https://sentry.io)", - "homepage": "https://sentry.io", - "keywords": [ - "crash-reporting", - "crash-reports", - "error-handler", - "error-monitoring", - "laravel", - "log", - "logging", - "sentry" - ], - "time": "2019-07-04T10:36:53+00:00" - }, - { - "name": "setasign/fpdi", - "version": "1.6.2", - "source": { - "type": "git", - "url": "https://github.com/Setasign/FPDI.git", - "reference": "a6ad58897a6d97cc2d2cd2adaeda343b25a368ea" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/Setasign/FPDI/zipball/a6ad58897a6d97cc2d2cd2adaeda343b25a368ea", - "reference": "a6ad58897a6d97cc2d2cd2adaeda343b25a368ea", - "shasum": "" - }, - "suggest": { - "setasign/fpdf": "FPDI will extend this class but as it is also possible to use \"tecnickcom/tcpdf\" as an alternative there's no fixed dependency configured.", - "setasign/fpdi-fpdf": "Use this package to automatically evaluate dependencies to FPDF.", - "setasign/fpdi-tcpdf": "Use this package to automatically evaluate dependencies to TCPDF." - }, - "type": "library", - "autoload": { - "classmap": [ - "filters/", - "fpdi.php", - "fpdf_tpl.php", - "fpdi_pdf_parser.php", - "pdf_context.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Jan Slabon", - "email": "jan.slabon@setasign.com", - "homepage": "https://www.setasign.com" - } - ], - "description": "FPDI is a collection of PHP classes facilitating developers to read pages from existing PDF documents and use them as templates in FPDF. Because it is also possible to use FPDI with TCPDF, there are no fixed dependencies defined. Please see suggestions for packages which evaluates the dependencies automatically.", - "homepage": "https://www.setasign.com/fpdi", - "keywords": [ - "fpdf", - "fpdi", - "pdf" - ], - "time": "2017-05-11T14:25:49+00:00" - }, - { - "name": "spatie/image", - "version": "1.5.2", - "source": { - "type": "git", - "url": "https://github.com/spatie/image.git", - "reference": "d4cb6afff1b98fd6e17396d91e0e584c3d91bb23" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/spatie/image/zipball/d4cb6afff1b98fd6e17396d91e0e584c3d91bb23", - "reference": "d4cb6afff1b98fd6e17396d91e0e584c3d91bb23", - "shasum": "" - }, - "require": { - "league/glide": "^1.2", - "php": "^7.0", - "spatie/image-optimizer": "^1.0", - "spatie/temporary-directory": "^1.0.0", - "symfony/process": "^3.0|^4.0" - }, - "require-dev": { - "larapack/dd": "^1.1", - "phpunit/phpunit": "^6.0|^7.0", - "symfony/var-dumper": "^3.2" - }, - "type": "library", - "autoload": { - "psr-4": { - "Spatie\\Image\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Freek Van der Herten", - "email": "freek@spatie.be", - "homepage": "https://spatie.be", - "role": "Developer" - } - ], - "description": "Manipulate images with an expressive API", - "homepage": "https://github.com/spatie/image", - "keywords": [ - "image", - "spatie" - ], - "time": "2018-05-05T21:44:52+00:00" - }, - { - "name": "spatie/image-optimizer", - "version": "1.1.3", - "source": { - "type": "git", - "url": "https://github.com/spatie/image-optimizer.git", - "reference": "90d6eebf9a84cc88e4cd2af3928004ba59e693a4" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/spatie/image-optimizer/zipball/90d6eebf9a84cc88e4cd2af3928004ba59e693a4", - "reference": "90d6eebf9a84cc88e4cd2af3928004ba59e693a4", - "shasum": "" - }, - "require": { - "ext-fileinfo": "*", - "php": "^7.0", - "psr/log": "^1.0", - "symfony/process": "^2.8|^3.0|^4.0" - }, - "require-dev": { - "phpunit/phpunit": "^6.2|^7.0", - "symfony/var-dumper": "^3.0|^4.0" - }, - "type": "library", - "autoload": { - "psr-4": { - "Spatie\\ImageOptimizer\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Freek Van der Herten", - "email": "freek@spatie.be", - "homepage": "https://spatie.be", - "role": "Developer" - } - ], - "description": "Easily optimize images using PHP", - "homepage": "https://github.com/spatie/image-optimizer", - "keywords": [ - "image-optimizer", - "spatie" - ], - "time": "2018-11-19T22:17:30+00:00" - }, - { - "name": "spatie/laravel-medialibrary", - "version": "7.5.0", - "source": { - "type": "git", - "url": "https://github.com/spatie/laravel-medialibrary.git", - "reference": "5f980f3c2287fe9bd387ac46401972e0bc730bc6" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/spatie/laravel-medialibrary/zipball/5f980f3c2287fe9bd387ac46401972e0bc730bc6", - "reference": "5f980f3c2287fe9bd387ac46401972e0bc730bc6", - "shasum": "" - }, - "require": { - "laravel/framework": "~5.5.0|~5.6.0|~5.7.0", - "league/flysystem": "^1.0.8", - "maennchen/zipstream-php": "~0.4", - "php": "^7.1", - "spatie/image": "^1.4.0", - "spatie/pdf-to-image": "^1.2", - "spatie/temporary-directory": "^1.1" - }, - "conflict": { - "php-ffmpeg/php-ffmpeg": "<0.6.1" - }, - "require-dev": { - "doctrine/dbal": "^2.5.2", - "ext-pdo_sqlite": "*", - "guzzlehttp/guzzle": "^6.3", - "league/flysystem-aws-s3-v3": "^1.0.13", - "mockery/mockery": "^1.0.0", - "orchestra/testbench": "~3.5.0|~3.6.0|~3.7.0", - "phpunit/phpunit": "^7.0", - "spatie/phpunit-snapshot-assertions": "^1.2" - }, - "suggest": { - "league/flysystem-aws-s3-v3": "Required to use AWS S3 file storage", - "php-ffmpeg/php-ffmpeg": "Required for generating video thumbnails" - }, - "type": "library", - "extra": { - "laravel": { - "providers": [ - "Spatie\\MediaLibrary\\MediaLibraryServiceProvider" - ] - } - }, - "autoload": { - "psr-4": { - "Spatie\\MediaLibrary\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Freek Van der Herten", - "email": "freek@spatie.be", - "homepage": "https://murze.be", - "role": "Developer" - } - ], - "description": "Associate files with Eloquent models", - "homepage": "https://github.com/spatie/laravel-medialibrary", - "keywords": [ - "cms", - "conversion", - "downloads", - "images", - "laravel", - "laravel-medialibrary", - "media", - "spatie" - ], - "time": "2018-09-10T11:01:52+00:00" - }, - { - "name": "spatie/laravel-translatable", - "version": "2.2.1", - "source": { - "type": "git", - "url": "https://github.com/spatie/laravel-translatable.git", - "reference": "107df7d9a75046a7552a995ed3d1971a9f98f833" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/spatie/laravel-translatable/zipball/107df7d9a75046a7552a995ed3d1971a9f98f833", - "reference": "107df7d9a75046a7552a995ed3d1971a9f98f833", - "shasum": "" - }, - "require": { - "laravel/framework": "~5.5.0|~5.6.0|~5.7.0", - "php": "^7.0" - }, - "require-dev": { - "mockery/mockery": "^1.0", - "orchestra/testbench": "~3.5.0|~3.6.0|~3.7.0", - "phpunit/phpunit": "^6.3|^7.0" - }, - "type": "library", - "extra": { - "laravel": { - "providers": [ - "Spatie\\Translatable\\TranslatableServiceProvider" - ] - } - }, - "autoload": { - "psr-4": { - "Spatie\\Translatable\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Sebastian De Deyne", - "email": "sebastian@spatie.be", - "homepage": "https://spatie.be", - "role": "Developer" - }, - { - "name": "Freek Van der Herten", - "email": "freek@spatie.be", - "homepage": "https://spatie.be", - "role": "Developer" - }, - { - "name": "Mohamed Said", - "email": "theMohamedSaid@gmail.com", - "role": "Original idea" - } - ], - "description": "A trait to make an Eloquent model hold translations", - "homepage": "https://github.com/spatie/laravel-translatable", - "keywords": [ - "eloquent", - "i8n", - "laravel-translatable", - "model", - "multilingual", - "spatie", - "translate" - ], - "time": "2018-08-24T09:34:12+00:00" - }, - { - "name": "spatie/pdf-to-image", - "version": "1.8.1", - "source": { - "type": "git", - "url": "https://github.com/spatie/pdf-to-image.git", - "reference": "f33afc92ff7bff272fa6a9ba1cc335e96c57eb26" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/spatie/pdf-to-image/zipball/f33afc92ff7bff272fa6a9ba1cc335e96c57eb26", - "reference": "f33afc92ff7bff272fa6a9ba1cc335e96c57eb26", - "shasum": "" - }, - "require": { - "ext-imagick": "*", - "php": "^7.0" - }, - "require-dev": { - "phpunit/phpunit": "^6.2" - }, - "type": "library", - "autoload": { - "psr-4": { - "Spatie\\PdfToImage\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Freek Van der Herten", - "email": "freek@spatie.be", - "homepage": "https://spatie.be", - "role": "Developer" - } - ], - "description": "Convert a pdf to an image", - "homepage": "https://github.com/spatie/pdf-to-image", - "keywords": [ - "convert", - "image", - "pdf", - "pdf-to-image", - "spatie" - ], - "time": "2018-07-02T09:30:32+00:00" - }, - { - "name": "spatie/temporary-directory", - "version": "1.1.4", - "source": { - "type": "git", - "url": "https://github.com/spatie/temporary-directory.git", - "reference": "5e1799fa2297363ebfb4df296fea90afbd4ef9b7" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/spatie/temporary-directory/zipball/5e1799fa2297363ebfb4df296fea90afbd4ef9b7", - "reference": "5e1799fa2297363ebfb4df296fea90afbd4ef9b7", - "shasum": "" - }, - "require": { - "php": "^7.0" - }, - "require-dev": { - "phpunit/phpunit": "^6.3" - }, - "type": "library", - "autoload": { - "psr-4": { - "Spatie\\TemporaryDirectory\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Alex Vanderbist", - "email": "alex@spatie.be", - "homepage": "https://spatie.be", - "role": "Developer" - } - ], - "description": "Easily create, use and destroy temporary directories", - "homepage": "https://github.com/spatie/temporary-directory", - "keywords": [ - "spatie", - "temporary-directory" - ], - "time": "2018-04-12T09:34:43+00:00" - }, - { - "name": "studio-42/elfinder", - "version": "2.1.43", - "source": { - "type": "git", - "url": "https://github.com/Studio-42/elFinder.git", - "reference": "878daf75321c5c81d1ae308298241d94b383ea62" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/Studio-42/elFinder/zipball/878daf75321c5c81d1ae308298241d94b383ea62", - "reference": "878daf75321c5c81d1ae308298241d94b383ea62", - "shasum": "" - }, - "require": { - "php": ">=5.2" - }, - "suggest": { - "barryvdh/elfinder-flysystem-driver": "VolumeDriver for elFinder to use Flysystem as a root.", - "google/apiclient": "VolumeDriver GoogleDrive require `google/apiclient:^2.0.", - "kunalvarma05/dropbox-php-sdk": "VolumeDriver `Dropbox`2 require `kunalvarma05/dropbox-php-sdk.", - "nao-pon/flysystem-google-drive": "require in GoogleDrive network volume mounting with Flysystem." - }, - "type": "library", - "autoload": { - "classmap": [ - "php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Dmitry Levashov", - "email": "dio@std42.ru", - "homepage": "http://std42.ru" - }, - { - "name": "Troex Nevelin", - "email": "troex@fury.scancode.ru", - "homepage": "http://std42.ru" - }, - { - "name": "Community contributions", - "homepage": "https://github.com/Studio-42/elFinder/contributors" - }, - { - "name": "Naoki Sawada", - "email": "hypweb+elfinder@gmail.com", - "homepage": "http://xoops.hypweb.net" - } - ], - "description": "File manager for web", - "homepage": "http://elfinder.org", - "time": "2018-11-24T01:37:42+00:00" - }, - { - "name": "swayok/alternative-laravel-cache", - "version": "dev-master", - "source": { - "type": "git", - "url": "https://github.com/deligram/alternative-laravel-cache.git", - "reference": "3570ef2c062e4eb055bdf50ee839ce4584b27840" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/deligram/alternative-laravel-cache/zipball/3570ef2c062e4eb055bdf50ee839ce4584b27840", - "reference": "3570ef2c062e4eb055bdf50ee839ce4584b27840", - "shasum": "" - }, - "require": { - "cache/filesystem-adapter": "^0.3.0", - "cache/predis-adapter": "^0.4.0", - "laravel/framework": ">=5.2", - "php": ">=5.6" - }, - "type": "library", - "extra": { - "laravel": { - "providers": [ - "AlternativeLaravelCache\\Provider\\AlternativeCacheStoresServiceProvider" - ] - } - }, - "autoload": { - "psr-0": { - "AlternativeLaravelCache": "/src" - } - }, - "autoload-dev": { - "psr-4": { - "Tests\\": "tests/" - } - }, - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Alexander Filippov" - } - ], - "description": "Replacements for Laravel's redis and file cache stores that properly implement tagging idea. Powered by cache pool implementations provided by http://www.php-cache.com/", - "keywords": [ - "cache", - "laravel", - "php", - "redis cache", - "redis tagged cache", - "tagged cache" - ], - "support": { - "issues": "https://github.com/swayok/alternative-laravel-cache/issues", - "source": "https://github.com/deligram/alternative-laravel-cache/tree/master" - }, - "time": "2019-03-24T16:19:12+00:00" - }, - { - "name": "swiftmailer/swiftmailer", - "version": "v6.1.3", - "source": { - "type": "git", - "url": "https://github.com/swiftmailer/swiftmailer.git", - "reference": "8ddcb66ac10c392d3beb54829eef8ac1438595f4" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/swiftmailer/swiftmailer/zipball/8ddcb66ac10c392d3beb54829eef8ac1438595f4", - "reference": "8ddcb66ac10c392d3beb54829eef8ac1438595f4", - "shasum": "" - }, - "require": { - "egulias/email-validator": "~2.0", - "php": ">=7.0.0" - }, - "require-dev": { - "mockery/mockery": "~0.9.1", - "symfony/phpunit-bridge": "~3.3@dev" - }, - "suggest": { - "ext-intl": "Needed to support internationalized email addresses", - "true/punycode": "Needed to support internationalized email addresses, if ext-intl is not installed" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "6.1-dev" - } - }, - "autoload": { - "files": [ - "lib/swift_required.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Chris Corbyn" - }, - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - } - ], - "description": "Swiftmailer, free feature-rich PHP mailer", - "homepage": "https://swiftmailer.symfony.com", - "keywords": [ - "email", - "mail", - "mailer" - ], - "time": "2018-09-11T07:12:52+00:00" - }, - { - "name": "symfony/console", - "version": "v4.1.8", - "source": { - "type": "git", - "url": "https://github.com/symfony/console.git", - "reference": "c74f4d1988dfcd8760273e53551694da32b056d0" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/c74f4d1988dfcd8760273e53551694da32b056d0", - "reference": "c74f4d1988dfcd8760273e53551694da32b056d0", - "shasum": "" - }, - "require": { - "php": "^7.1.3", - "symfony/polyfill-mbstring": "~1.0" - }, - "conflict": { - "symfony/dependency-injection": "<3.4", - "symfony/process": "<3.3" - }, - "require-dev": { - "psr/log": "~1.0", - "symfony/config": "~3.4|~4.0", - "symfony/dependency-injection": "~3.4|~4.0", - "symfony/event-dispatcher": "~3.4|~4.0", - "symfony/lock": "~3.4|~4.0", - "symfony/process": "~3.4|~4.0" - }, - "suggest": { - "psr/log-implementation": "For using the console logger", - "symfony/event-dispatcher": "", - "symfony/lock": "", - "symfony/process": "" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.1-dev" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Component\\Console\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony Console Component", - "homepage": "https://symfony.com", - "time": "2018-11-26T14:00:40+00:00" - }, - { - "name": "symfony/css-selector", - "version": "v4.1.8", - "source": { - "type": "git", - "url": "https://github.com/symfony/css-selector.git", - "reference": "9e4dc57949853315561f0cd5eb84d0707465502a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/css-selector/zipball/9e4dc57949853315561f0cd5eb84d0707465502a", - "reference": "9e4dc57949853315561f0cd5eb84d0707465502a", - "shasum": "" - }, - "require": { - "php": "^7.1.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.1-dev" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Component\\CssSelector\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Jean-François Simon", - "email": "jeanfrancois.simon@sensiolabs.com" - }, - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony CssSelector Component", - "homepage": "https://symfony.com", - "time": "2018-11-11T19:51:29+00:00" - }, - { - "name": "symfony/debug", - "version": "v4.2.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/debug.git", - "reference": "cf9b2e33f757deb884ce474e06d2647c1c769b65" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/debug/zipball/cf9b2e33f757deb884ce474e06d2647c1c769b65", - "reference": "cf9b2e33f757deb884ce474e06d2647c1c769b65", - "shasum": "" - }, - "require": { - "php": "^7.1.3", - "psr/log": "~1.0" - }, - "conflict": { - "symfony/http-kernel": "<3.4" - }, - "require-dev": { - "symfony/http-kernel": "~3.4|~4.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.2-dev" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Component\\Debug\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony Debug Component", - "homepage": "https://symfony.com", - "time": "2019-01-25T14:35:16+00:00" - }, - { - "name": "symfony/event-dispatcher", - "version": "v4.1.8", - "source": { - "type": "git", - "url": "https://github.com/symfony/event-dispatcher.git", - "reference": "8b93ce06506d58485893e2da366767dcc5390862" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/8b93ce06506d58485893e2da366767dcc5390862", - "reference": "8b93ce06506d58485893e2da366767dcc5390862", - "shasum": "" - }, - "require": { - "php": "^7.1.3" - }, - "conflict": { - "symfony/dependency-injection": "<3.4" - }, - "require-dev": { - "psr/log": "~1.0", - "symfony/config": "~3.4|~4.0", - "symfony/dependency-injection": "~3.4|~4.0", - "symfony/expression-language": "~3.4|~4.0", - "symfony/stopwatch": "~3.4|~4.0" - }, - "suggest": { - "symfony/dependency-injection": "", - "symfony/http-kernel": "" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.1-dev" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Component\\EventDispatcher\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony EventDispatcher Component", - "homepage": "https://symfony.com", - "time": "2018-11-26T10:26:29+00:00" - }, - { - "name": "symfony/finder", - "version": "v4.1.8", - "source": { - "type": "git", - "url": "https://github.com/symfony/finder.git", - "reference": "68fbdcafe915db67adb13fddaec4532e684f6689" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/finder/zipball/68fbdcafe915db67adb13fddaec4532e684f6689", - "reference": "68fbdcafe915db67adb13fddaec4532e684f6689", - "shasum": "" - }, - "require": { - "php": "^7.1.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.1-dev" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Component\\Finder\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony Finder Component", - "homepage": "https://symfony.com", - "time": "2018-11-11T19:51:29+00:00" - }, - { - "name": "symfony/http-foundation", - "version": "v4.1.8", - "source": { - "type": "git", - "url": "https://github.com/symfony/http-foundation.git", - "reference": "26062b9527b6797fc6239ed698c9c0a3c5e891e0" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/http-foundation/zipball/26062b9527b6797fc6239ed698c9c0a3c5e891e0", - "reference": "26062b9527b6797fc6239ed698c9c0a3c5e891e0", - "shasum": "" - }, - "require": { - "php": "^7.1.3", - "symfony/polyfill-mbstring": "~1.1" - }, - "require-dev": { - "predis/predis": "~1.0", - "symfony/expression-language": "~3.4|~4.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.1-dev" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Component\\HttpFoundation\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony HttpFoundation Component", - "homepage": "https://symfony.com", - "time": "2018-11-26T10:26:29+00:00" - }, - { - "name": "symfony/http-kernel", - "version": "v4.1.8", - "source": { - "type": "git", - "url": "https://github.com/symfony/http-kernel.git", - "reference": "2be29c72276ba4ef5c5488de666f9f12aa768b44" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/http-kernel/zipball/2be29c72276ba4ef5c5488de666f9f12aa768b44", - "reference": "2be29c72276ba4ef5c5488de666f9f12aa768b44", - "shasum": "" - }, - "require": { - "php": "^7.1.3", - "psr/log": "~1.0", - "symfony/debug": "~3.4|~4.0", - "symfony/event-dispatcher": "~4.1", - "symfony/http-foundation": "^4.1.1", - "symfony/polyfill-ctype": "~1.8" - }, - "conflict": { - "symfony/config": "<3.4", - "symfony/dependency-injection": "<4.1", - "symfony/var-dumper": "<4.1.1", - "twig/twig": "<1.34|<2.4,>=2" - }, - "provide": { - "psr/log-implementation": "1.0" - }, - "require-dev": { - "psr/cache": "~1.0", - "symfony/browser-kit": "~3.4|~4.0", - "symfony/config": "~3.4|~4.0", - "symfony/console": "~3.4|~4.0", - "symfony/css-selector": "~3.4|~4.0", - "symfony/dependency-injection": "^4.1", - "symfony/dom-crawler": "~3.4|~4.0", - "symfony/expression-language": "~3.4|~4.0", - "symfony/finder": "~3.4|~4.0", - "symfony/process": "~3.4|~4.0", - "symfony/routing": "~3.4|~4.0", - "symfony/stopwatch": "~3.4|~4.0", - "symfony/templating": "~3.4|~4.0", - "symfony/translation": "~3.4|~4.0", - "symfony/var-dumper": "^4.1.1" - }, - "suggest": { - "symfony/browser-kit": "", - "symfony/config": "", - "symfony/console": "", - "symfony/dependency-injection": "", - "symfony/var-dumper": "" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.1-dev" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Component\\HttpKernel\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony HttpKernel Component", - "homepage": "https://symfony.com", - "time": "2018-11-26T14:52:15+00:00" - }, - { - "name": "symfony/options-resolver", - "version": "v4.3.2", - "source": { - "type": "git", - "url": "https://github.com/symfony/options-resolver.git", - "reference": "40762ead607c8f792ee4516881369ffa553fee6f" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/options-resolver/zipball/40762ead607c8f792ee4516881369ffa553fee6f", - "reference": "40762ead607c8f792ee4516881369ffa553fee6f", - "shasum": "" - }, - "require": { - "php": "^7.1.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.3-dev" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Component\\OptionsResolver\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony OptionsResolver Component", - "homepage": "https://symfony.com", - "keywords": [ - "config", - "configuration", - "options" - ], - "time": "2019-06-13T11:01:17+00:00" - }, - { - "name": "symfony/polyfill-ctype", - "version": "v1.10.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-ctype.git", - "reference": "e3d826245268269cd66f8326bd8bc066687b4a19" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/e3d826245268269cd66f8326bd8bc066687b4a19", - "reference": "e3d826245268269cd66f8326bd8bc066687b4a19", - "shasum": "" - }, - "require": { - "php": ">=5.3.3" - }, - "suggest": { - "ext-ctype": "For best performance" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.9-dev" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Ctype\\": "" - }, - "files": [ - "bootstrap.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - }, - { - "name": "Gert de Pagter", - "email": "BackEndTea@gmail.com" - } - ], - "description": "Symfony polyfill for ctype functions", - "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "ctype", - "polyfill", - "portable" - ], - "time": "2018-08-06T14:22:27+00:00" - }, - { - "name": "symfony/polyfill-mbstring", - "version": "v1.10.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-mbstring.git", - "reference": "c79c051f5b3a46be09205c73b80b346e4153e494" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/c79c051f5b3a46be09205c73b80b346e4153e494", - "reference": "c79c051f5b3a46be09205c73b80b346e4153e494", - "shasum": "" - }, - "require": { - "php": ">=5.3.3" - }, - "suggest": { - "ext-mbstring": "For best performance" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.9-dev" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Mbstring\\": "" - }, - "files": [ - "bootstrap.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony polyfill for the Mbstring extension", - "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "mbstring", - "polyfill", - "portable", - "shim" - ], - "time": "2018-09-21T13:07:52+00:00" - }, - { - "name": "symfony/polyfill-php56", - "version": "v1.10.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-php56.git", - "reference": "ff208829fe1aa48ab9af356992bb7199fed551af" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php56/zipball/ff208829fe1aa48ab9af356992bb7199fed551af", - "reference": "ff208829fe1aa48ab9af356992bb7199fed551af", - "shasum": "" - }, - "require": { - "php": ">=5.3.3", - "symfony/polyfill-util": "~1.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.9-dev" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Php56\\": "" - }, - "files": [ - "bootstrap.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony polyfill backporting some PHP 5.6+ features to lower PHP versions", - "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "polyfill", - "portable", - "shim" - ], - "time": "2018-09-21T06:26:08+00:00" - }, - { - "name": "symfony/polyfill-php72", - "version": "v1.10.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-php72.git", - "reference": "9050816e2ca34a8e916c3a0ae8b9c2fccf68b631" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/9050816e2ca34a8e916c3a0ae8b9c2fccf68b631", - "reference": "9050816e2ca34a8e916c3a0ae8b9c2fccf68b631", - "shasum": "" - }, - "require": { - "php": ">=5.3.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.9-dev" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Php72\\": "" - }, - "files": [ - "bootstrap.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony polyfill backporting some PHP 7.2+ features to lower PHP versions", - "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "polyfill", - "portable", - "shim" - ], - "time": "2018-09-21T13:07:52+00:00" - }, - { - "name": "symfony/polyfill-util", - "version": "v1.10.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-util.git", - "reference": "3b58903eae668d348a7126f999b0da0f2f93611c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-util/zipball/3b58903eae668d348a7126f999b0da0f2f93611c", - "reference": "3b58903eae668d348a7126f999b0da0f2f93611c", - "shasum": "" - }, - "require": { - "php": ">=5.3.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.9-dev" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Util\\": "" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony utilities for portability of PHP codes", - "homepage": "https://symfony.com", - "keywords": [ - "compat", - "compatibility", - "polyfill", - "shim" - ], - "time": "2018-09-30T16:36:12+00:00" - }, - { - "name": "symfony/process", - "version": "v4.1.8", - "source": { - "type": "git", - "url": "https://github.com/symfony/process.git", - "reference": "471f6e24172366a97365baaae588ddaafbba9b20" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/471f6e24172366a97365baaae588ddaafbba9b20", - "reference": "471f6e24172366a97365baaae588ddaafbba9b20", - "shasum": "" - }, - "require": { - "php": "^7.1.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.1-dev" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Component\\Process\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony Process Component", - "homepage": "https://symfony.com", - "time": "2018-11-20T16:14:00+00:00" - }, - { - "name": "symfony/routing", - "version": "v4.1.8", - "source": { - "type": "git", - "url": "https://github.com/symfony/routing.git", - "reference": "eebc037d45c253af2349c5b25a2d0531a732efdc" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/routing/zipball/eebc037d45c253af2349c5b25a2d0531a732efdc", - "reference": "eebc037d45c253af2349c5b25a2d0531a732efdc", - "shasum": "" - }, - "require": { - "php": "^7.1.3" - }, - "conflict": { - "symfony/config": "<3.4", - "symfony/dependency-injection": "<3.4", - "symfony/yaml": "<3.4" - }, - "require-dev": { - "doctrine/annotations": "~1.0", - "psr/log": "~1.0", - "symfony/config": "~3.4|~4.0", - "symfony/dependency-injection": "~3.4|~4.0", - "symfony/expression-language": "~3.4|~4.0", - "symfony/http-foundation": "~3.4|~4.0", - "symfony/yaml": "~3.4|~4.0" - }, - "suggest": { - "doctrine/annotations": "For using the annotation loader", - "symfony/config": "For using the all-in-one router or any loader", - "symfony/dependency-injection": "For loading routes from a service", - "symfony/expression-language": "For using expression matching", - "symfony/http-foundation": "For using a Symfony Request object", - "symfony/yaml": "For using the YAML loader" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.1-dev" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Component\\Routing\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony Routing Component", - "homepage": "https://symfony.com", - "keywords": [ - "router", - "routing", - "uri", - "url" - ], - "time": "2018-11-26T10:24:14+00:00" - }, - { - "name": "symfony/translation", - "version": "v4.1.8", - "source": { - "type": "git", - "url": "https://github.com/symfony/translation.git", - "reference": "615e3cf75d00a7d6788316d9631957991ba9c26a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/translation/zipball/615e3cf75d00a7d6788316d9631957991ba9c26a", - "reference": "615e3cf75d00a7d6788316d9631957991ba9c26a", - "shasum": "" - }, - "require": { - "php": "^7.1.3", - "symfony/polyfill-mbstring": "~1.0" - }, - "conflict": { - "symfony/config": "<3.4", - "symfony/dependency-injection": "<3.4", - "symfony/yaml": "<3.4" - }, - "require-dev": { - "psr/log": "~1.0", - "symfony/config": "~3.4|~4.0", - "symfony/console": "~3.4|~4.0", - "symfony/dependency-injection": "~3.4|~4.0", - "symfony/finder": "~2.8|~3.0|~4.0", - "symfony/intl": "~3.4|~4.0", - "symfony/yaml": "~3.4|~4.0" - }, - "suggest": { - "psr/log-implementation": "To use logging capability in translator", - "symfony/config": "", - "symfony/yaml": "" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.1-dev" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Component\\Translation\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony Translation Component", - "homepage": "https://symfony.com", - "time": "2018-11-26T10:26:29+00:00" - }, - { - "name": "symfony/var-dumper", - "version": "v4.1.8", - "source": { - "type": "git", - "url": "https://github.com/symfony/var-dumper.git", - "reference": "42a55e4a4a7421124636f6f15845187704be0423" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/var-dumper/zipball/42a55e4a4a7421124636f6f15845187704be0423", - "reference": "42a55e4a4a7421124636f6f15845187704be0423", - "shasum": "" - }, - "require": { - "php": "^7.1.3", - "symfony/polyfill-mbstring": "~1.0", - "symfony/polyfill-php72": "~1.5" - }, - "conflict": { - "phpunit/phpunit": "<4.8.35|<5.4.3,>=5.0", - "symfony/console": "<3.4" - }, - "require-dev": { - "ext-iconv": "*", - "symfony/process": "~3.4|~4.0", - "twig/twig": "~1.34|~2.4" - }, - "suggest": { - "ext-iconv": "To convert non-UTF-8 strings to UTF-8 (or symfony/polyfill-iconv in case ext-iconv cannot be used).", - "ext-intl": "To show region name in time zone dump", - "symfony/console": "To use the ServerDumpCommand and/or the bin/var-dump-server script" - }, - "bin": [ - "Resources/bin/var-dump-server" - ], - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.1-dev" - } - }, - "autoload": { - "files": [ - "Resources/functions/dump.php" - ], - "psr-4": { - "Symfony\\Component\\VarDumper\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony mechanism for exploring and dumping PHP variables", - "homepage": "https://symfony.com", - "keywords": [ - "debug", - "dump" - ], - "time": "2018-11-20T16:14:00+00:00" - }, - { - "name": "symfony/yaml", - "version": "v3.4.19", - "source": { - "type": "git", - "url": "https://github.com/symfony/yaml.git", - "reference": "291e13d808bec481eab83f301f7bff3e699ef603" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/yaml/zipball/291e13d808bec481eab83f301f7bff3e699ef603", - "reference": "291e13d808bec481eab83f301f7bff3e699ef603", - "shasum": "" - }, - "require": { - "php": "^5.5.9|>=7.0.8", - "symfony/polyfill-ctype": "~1.8" - }, - "conflict": { - "symfony/console": "<3.4" - }, - "require-dev": { - "symfony/console": "~3.4|~4.0" - }, - "suggest": { - "symfony/console": "For validating YAML files using the lint command" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.4-dev" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Component\\Yaml\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony Yaml Component", - "homepage": "https://symfony.com", - "time": "2018-11-11T19:48:54+00:00" - }, - { - "name": "tamayo/laravel-scout-elastic", - "version": "5.0.0", - "source": { - "type": "git", - "url": "https://github.com/ErickTamayo/laravel-scout-elastic.git", - "reference": "c300b9b265777479284df7ff50944247eab1d0ef" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/ErickTamayo/laravel-scout-elastic/zipball/c300b9b265777479284df7ff50944247eab1d0ef", - "reference": "c300b9b265777479284df7ff50944247eab1d0ef", - "shasum": "" - }, - "require": { - "elasticsearch/elasticsearch": "^5.0", - "laravel/scout": "^5.0|^6.0|^7.0", - "php": ">=5.6.4" - }, - "require-dev": { - "fzaninotto/faker": "~1.4", - "mockery/mockery": "0.9.*", - "phpunit/phpunit": "~5.0" - }, - "suggest": { - "elasticsearch/elasticsearch": "Required to use the Elasticsearch engine (^5.0)." - }, - "type": "library", - "extra": { - "laravel": { - "providers": [ - "ScoutEngines\\Elasticsearch\\ElasticsearchProvider" - ] - } - }, - "autoload": { - "psr-4": { - "ScoutEngines\\Elasticsearch\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "description": "Elastic Driver for Laravel Scout", - "keywords": [ - "elastic", - "elasticsearch", - "laravel", - "scout" - ], - "time": "2019-05-14T14:12:07+00:00" - }, - { - "name": "tijsverkoyen/css-to-inline-styles", - "version": "2.2.1", - "source": { - "type": "git", - "url": "https://github.com/tijsverkoyen/CssToInlineStyles.git", - "reference": "0ed4a2ea4e0902dac0489e6436ebcd5bbcae9757" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/tijsverkoyen/CssToInlineStyles/zipball/0ed4a2ea4e0902dac0489e6436ebcd5bbcae9757", - "reference": "0ed4a2ea4e0902dac0489e6436ebcd5bbcae9757", - "shasum": "" - }, - "require": { - "php": "^5.5 || ^7.0", - "symfony/css-selector": "^2.7 || ^3.0 || ^4.0" - }, - "require-dev": { - "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.2.x-dev" - } - }, - "autoload": { - "psr-4": { - "TijsVerkoyen\\CssToInlineStyles\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Tijs Verkoyen", - "email": "css_to_inline_styles@verkoyen.eu", - "role": "Developer" - } - ], - "description": "CssToInlineStyles is a class that enables you to convert HTML-pages/files into HTML-pages/files with inline styles. This is very useful when you're sending emails.", - "homepage": "https://github.com/tijsverkoyen/CssToInlineStyles", - "time": "2017-11-27T11:13:29+00:00" - }, - { - "name": "tymon/jwt-auth", - "version": "dev-develop", - "source": { - "type": "git", - "url": "https://github.com/tymondesigns/jwt-auth.git", - "reference": "689fcc263f6c4f650057905ae6dce441879df19b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/tymondesigns/jwt-auth/zipball/689fcc263f6c4f650057905ae6dce441879df19b", - "reference": "689fcc263f6c4f650057905ae6dce441879df19b", - "shasum": "" - }, - "require": { - "illuminate/auth": "5.1.* || 5.2.* || 5.3.* || 5.4.* || 5.5.* || 5.6.* || 5.7.*", - "illuminate/contracts": "5.1.* || 5.2.* || 5.3.* || 5.4.* || 5.5.* || 5.6.* || 5.7.*", - "illuminate/http": "5.1.* || 5.2.* || 5.3.* || 5.4.* || 5.5.* || 5.6.* || 5.7.*", - "illuminate/support": "5.1.* || 5.2.* || 5.3.* || 5.4.* || 5.5.* || 5.6.* || 5.7.*", - "lcobucci/jwt": "^3.2", - "namshi/jose": "^7.0", - "nesbot/carbon": "^1.0", - "php": "^5.5.9 || ^7.0" - }, - "require-dev": { - "cartalyst/sentinel": "2.0.*", - "illuminate/console": "5.1.* || 5.2.* || 5.3.* || 5.4.* || 5.5.* || 5.6.* || 5.7.*", - "illuminate/database": "5.1.* || 5.2.* || 5.3.* || 5.4.* || 5.5.* || 5.6.* || 5.7.*", - "illuminate/routing": "5.1.* || 5.2.* || 5.3.* || 5.4.* || 5.5.* || 5.6.* || 5.7.*", - "mockery/mockery": ">=0.9.9", - "phpunit/phpunit": "~4.8 || ~6.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-develop": "1.0-dev" - }, - "laravel": { - "aliases": { - "JWTAuth": "Tymon\\JWTAuth\\Facades\\JWTAuth", - "JWTFactory": "Tymon\\JWTAuth\\Facades\\JWTFactory" - }, - "providers": [ - "Tymon\\JWTAuth\\Providers\\LaravelServiceProvider" - ] - } - }, - "autoload": { - "psr-4": { - "Tymon\\JWTAuth\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Sean Tymon", - "email": "tymon148@gmail.com", - "homepage": "https://tymon.xyz", - "role": "Developer" - } - ], - "description": "JSON Web Token Authentication for Laravel and Lumen", - "homepage": "https://github.com/tymondesigns/jwt-auth", - "keywords": [ - "Authentication", - "JSON Web Token", - "auth", - "jwt", - "laravel" - ], - "time": "2018-10-17T13:25:54+00:00" - }, - { - "name": "venturecraft/revisionable", - "version": "1.28.0", - "source": { - "type": "git", - "url": "https://github.com/VentureCraft/revisionable.git", - "reference": "5a76d29b897d4864cef41c605e7e03258dd5d051" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/VentureCraft/revisionable/zipball/5a76d29b897d4864cef41c605e7e03258dd5d051", - "reference": "5a76d29b897d4864cef41c605e7e03258dd5d051", - "shasum": "" - }, - "require": { - "illuminate/support": "~4.0|~5.0|~5.1", - "php": ">=5.3.0" - }, - "type": "library", - "autoload": { - "classmap": [ - "src/migrations" - ], - "psr-0": { - "Venturecraft\\Revisionable": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Chris Duell", - "email": "me@chrisduell.com" - } - ], - "description": "Keep a revision history for your models without thinking, created as a package for use with Laravel", - "homepage": "http://github.com/venturecraft/revisionable", - "keywords": [ - "ardent", - "history", - "laravel", - "model", - "revision" - ], - "time": "2016-08-02T02:32:00+00:00" - }, - { - "name": "vlucas/phpdotenv", - "version": "v2.5.1", - "source": { - "type": "git", - "url": "https://github.com/vlucas/phpdotenv.git", - "reference": "8abb4f9aa89ddea9d52112c65bbe8d0125e2fa8e" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/vlucas/phpdotenv/zipball/8abb4f9aa89ddea9d52112c65bbe8d0125e2fa8e", - "reference": "8abb4f9aa89ddea9d52112c65bbe8d0125e2fa8e", - "shasum": "" - }, - "require": { - "php": ">=5.3.9" - }, - "require-dev": { - "phpunit/phpunit": "^4.8.35 || ^5.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.5-dev" - } - }, - "autoload": { - "psr-4": { - "Dotenv\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Vance Lucas", - "email": "vance@vancelucas.com", - "homepage": "http://www.vancelucas.com" - } - ], - "description": "Loads environment variables from `.env` to `getenv()`, `$_ENV` and `$_SERVER` automagically.", - "keywords": [ - "dotenv", - "env", - "environment" - ], - "time": "2018-07-29T20:33:41+00:00" - }, - { - "name": "ybr-nx/laravel-mariadb", - "version": "1.0.18", - "source": { - "type": "git", - "url": "https://github.com/ybr-nx/laravel-mariadb.git", - "reference": "521b48e67cf08d6506835f36a0393c44ff06faf2" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/ybr-nx/laravel-mariadb/zipball/521b48e67cf08d6506835f36a0393c44ff06faf2", - "reference": "521b48e67cf08d6506835f36a0393c44ff06faf2", - "shasum": "" - }, - "require": { - "illuminate/database": "5.3.*|5.4.*|5.5.*|5.6.*|5.7.*" - }, - "type": "library", - "extra": { - "laravel": { - "providers": [ - "YbrNX\\MariaDB\\MariaDBServiceProvider" - ] - } - }, - "autoload": { - "psr-4": { - "YbrNX\\MariaDB\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "EUPL-1.2" - ], - "authors": [ - { - "name": "Ingmar Aasoja", - "email": "ingmar@aasoja.ee" - } - ], - "description": "Add MariaDB JSON select support to Laravel", - "keywords": [ - "database", - "json", - "laravel", - "mariadb" - ], - "time": "2018-12-16T17:44:26+00:00" - }, - { - "name": "zendframework/zend-diactoros", - "version": "2.1.2", - "source": { - "type": "git", - "url": "https://github.com/zendframework/zend-diactoros.git", - "reference": "37bf68b428850ee26ed7c3be6c26236dd95a95f1" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/zendframework/zend-diactoros/zipball/37bf68b428850ee26ed7c3be6c26236dd95a95f1", - "reference": "37bf68b428850ee26ed7c3be6c26236dd95a95f1", - "shasum": "" - }, - "require": { - "php": "^7.1", - "psr/http-factory": "^1.0", - "psr/http-message": "^1.0" - }, - "provide": { - "psr/http-factory-implementation": "1.0", - "psr/http-message-implementation": "1.0" - }, - "require-dev": { - "ext-dom": "*", - "ext-libxml": "*", - "http-interop/http-factory-tests": "^0.5.0", - "php-http/psr7-integration-tests": "dev-master", - "phpunit/phpunit": "^7.0.2", - "zendframework/zend-coding-standard": "~1.0.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.1.x-dev", - "dev-develop": "2.2.x-dev", - "dev-release-1.8": "1.8.x-dev" - } - }, - "autoload": { - "files": [ - "src/functions/create_uploaded_file.php", - "src/functions/marshal_headers_from_sapi.php", - "src/functions/marshal_method_from_sapi.php", - "src/functions/marshal_protocol_version_from_sapi.php", - "src/functions/marshal_uri_from_sapi.php", - "src/functions/normalize_server.php", - "src/functions/normalize_uploaded_files.php", - "src/functions/parse_cookie_header.php" - ], - "psr-4": { - "Zend\\Diactoros\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "description": "PSR HTTP Message implementations", - "keywords": [ - "http", - "psr", - "psr-7" - ], - "time": "2019-04-29T21:11:00+00:00" - } - ], - "packages-dev": [ - { - "name": "backpack/generators", - "version": "1.1.13", - "source": { - "type": "git", - "url": "https://github.com/Laravel-Backpack/Generators.git", - "reference": "fca62160c8d00e36a96ac4002100de13440eeae1" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/Laravel-Backpack/Generators/zipball/fca62160c8d00e36a96ac4002100de13440eeae1", - "reference": "fca62160c8d00e36a96ac4002100de13440eeae1", - "shasum": "" - }, - "require": { - "illuminate/console": ">=5.1", - "illuminate/support": ">=5.1", - "php": ">=5.5.0" - }, - "require-dev": { - "phpunit/phpunit": "4.*", - "scrutinizer/ocular": "~1.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0-dev" - }, - "laravel": { - "providers": [ - "Backpack\\Generators\\GeneratorsServiceProvider" - ] - } - }, - "autoload": { - "psr-4": { - "Backpack\\Generators\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "proprietary" - ], - "authors": [ - { - "name": "Cristian Tone", - "email": "cristitone@outlook.com", - "homepage": "http://updivision.com", - "role": "Developer" - } - ], - "description": "Generate files for laravel projects", - "homepage": "https://github.com/laravel-backpack/generators", - "keywords": [ - "config", - "generators", - "model", - "request", - "view" - ], - "time": "2018-02-13T19:21:53+00:00" - }, - { - "name": "barryvdh/laravel-debugbar", - "version": "v3.2.1", - "source": { - "type": "git", - "url": "https://github.com/barryvdh/laravel-debugbar.git", - "reference": "9d5caf43c5f3a3aea2178942f281054805872e7c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/barryvdh/laravel-debugbar/zipball/9d5caf43c5f3a3aea2178942f281054805872e7c", - "reference": "9d5caf43c5f3a3aea2178942f281054805872e7c", - "shasum": "" - }, - "require": { - "illuminate/routing": "5.5.x|5.6.x|5.7.x", - "illuminate/session": "5.5.x|5.6.x|5.7.x", - "illuminate/support": "5.5.x|5.6.x|5.7.x", - "maximebf/debugbar": "~1.15.0", - "php": ">=7.0", - "symfony/debug": "^3|^4", - "symfony/finder": "^3|^4" - }, - "require-dev": { - "laravel/framework": "5.5.x" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.2-dev" - }, - "laravel": { - "providers": [ - "Barryvdh\\Debugbar\\ServiceProvider" - ], - "aliases": { - "Debugbar": "Barryvdh\\Debugbar\\Facade" - } - } - }, - "autoload": { - "psr-4": { - "Barryvdh\\Debugbar\\": "src/" - }, - "files": [ - "src/helpers.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Barry vd. Heuvel", - "email": "barryvdh@gmail.com" - } - ], - "description": "PHP Debugbar integration for Laravel", - "keywords": [ - "debug", - "debugbar", - "laravel", - "profiler", - "webprofiler" - ], - "time": "2018-11-09T08:37:55+00:00" - }, - { - "name": "barryvdh/laravel-ide-helper", - "version": "v2.5.2", - "source": { - "type": "git", - "url": "https://github.com/barryvdh/laravel-ide-helper.git", - "reference": "981ff45b43e0cf808af0a5a5f40f6369e0e29499" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/barryvdh/laravel-ide-helper/zipball/981ff45b43e0cf808af0a5a5f40f6369e0e29499", - "reference": "981ff45b43e0cf808af0a5a5f40f6369e0e29499", - "shasum": "" - }, - "require": { - "barryvdh/reflection-docblock": "^2.0.4", - "composer/composer": "^1.6", - "illuminate/console": "^5.5,<5.8", - "illuminate/filesystem": "^5.5,<5.8", - "illuminate/support": "^5.5,<5.8", - "php": ">=7" - }, - "require-dev": { - "doctrine/dbal": "~2.3", - "illuminate/config": "^5.1,<5.8", - "illuminate/view": "^5.1,<5.8", - "phpro/grumphp": "^0.14", - "phpunit/phpunit": "4.*", - "scrutinizer/ocular": "~1.1", - "squizlabs/php_codesniffer": "^3" - }, - "suggest": { - "doctrine/dbal": "Load information from the database about models for phpdocs (~2.3)" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.5-dev" - }, - "laravel": { - "providers": [ - "Barryvdh\\LaravelIdeHelper\\IdeHelperServiceProvider" - ] - } - }, - "autoload": { - "psr-4": { - "Barryvdh\\LaravelIdeHelper\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Barry vd. Heuvel", - "email": "barryvdh@gmail.com" - } - ], - "description": "Laravel IDE Helper, generates correct PHPDocs for all Facade classes, to improve auto-completion.", - "keywords": [ - "autocomplete", - "codeintel", - "helper", - "ide", - "laravel", - "netbeans", - "phpdoc", - "phpstorm", - "sublime" - ], - "time": "2018-10-06T09:35:51+00:00" - }, - { - "name": "barryvdh/reflection-docblock", - "version": "v2.0.5", - "source": { - "type": "git", - "url": "https://github.com/barryvdh/ReflectionDocBlock.git", - "reference": "64165bd4ba9a550d11ea57569463b7c722dc6b0a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/barryvdh/ReflectionDocBlock/zipball/64165bd4ba9a550d11ea57569463b7c722dc6b0a", - "reference": "64165bd4ba9a550d11ea57569463b7c722dc6b0a", - "shasum": "" - }, - "require": { - "php": ">=5.3.3" - }, - "require-dev": { - "phpunit/phpunit": "~4.0,<4.5" - }, - "suggest": { - "dflydev/markdown": "~1.0", - "erusev/parsedown": "~1.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.0.x-dev" - } - }, - "autoload": { - "psr-0": { - "Barryvdh": [ - "src/" - ] - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Mike van Riel", - "email": "mike.vanriel@naenius.com" - } - ], - "time": "2018-10-25T19:09:52+00:00" - }, - { - "name": "beyondcode/laravel-dump-server", - "version": "1.3.0", - "source": { - "type": "git", - "url": "https://github.com/beyondcode/laravel-dump-server.git", - "reference": "fcc88fa66895f8c1ff83f6145a5eff5fa2a0739a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/beyondcode/laravel-dump-server/zipball/fcc88fa66895f8c1ff83f6145a5eff5fa2a0739a", - "reference": "fcc88fa66895f8c1ff83f6145a5eff5fa2a0739a", - "shasum": "" - }, - "require": { - "illuminate/console": "5.6.*|5.7.*|5.8.*|^6.0", - "illuminate/http": "5.6.*|5.7.*|5.8.*|^6.0", - "illuminate/support": "5.6.*|5.7.*|5.8.*|^6.0", - "php": "^7.1", - "symfony/var-dumper": "^4.1.1" - }, - "require-dev": { - "larapack/dd": "^1.0", - "phpunit/phpunit": "^7.0" - }, - "type": "library", - "extra": { - "laravel": { - "providers": [ - "BeyondCode\\DumpServer\\DumpServerServiceProvider" - ] - } - }, - "autoload": { - "psr-4": { - "BeyondCode\\DumpServer\\": "src" - }, - "files": [ - "helpers.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Marcel Pociot", - "email": "marcel@beyondco.de", - "homepage": "https://beyondco.de", - "role": "Developer" - } - ], - "description": "Symfony Var-Dump Server for Laravel", - "homepage": "https://github.com/beyondcode/laravel-dump-server", - "keywords": [ - "beyondcode", - "laravel-dump-server" - ], - "time": "2019-08-11T13:17:40+00:00" - }, - { - "name": "composer/ca-bundle", - "version": "1.1.3", - "source": { - "type": "git", - "url": "https://github.com/composer/ca-bundle.git", - "reference": "8afa52cd417f4ec417b4bfe86b68106538a87660" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/composer/ca-bundle/zipball/8afa52cd417f4ec417b4bfe86b68106538a87660", - "reference": "8afa52cd417f4ec417b4bfe86b68106538a87660", - "shasum": "" - }, - "require": { - "ext-openssl": "*", - "ext-pcre": "*", - "php": "^5.3.2 || ^7.0" - }, - "require-dev": { - "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.5", - "psr/log": "^1.0", - "symfony/process": "^2.5 || ^3.0 || ^4.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.x-dev" - } - }, - "autoload": { - "psr-4": { - "Composer\\CaBundle\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Jordi Boggiano", - "email": "j.boggiano@seld.be", - "homepage": "http://seld.be" - } - ], - "description": "Lets you find a path to the system CA bundle, and includes a fallback to the Mozilla CA bundle.", - "keywords": [ - "cabundle", - "cacert", - "certificate", - "ssl", - "tls" - ], - "time": "2018-10-18T06:09:13+00:00" - }, - { - "name": "composer/composer", - "version": "1.7.3", - "source": { - "type": "git", - "url": "https://github.com/composer/composer.git", - "reference": "e965b9aaa8854c3067f1ed2ae45f436572d73eb7" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/composer/composer/zipball/e965b9aaa8854c3067f1ed2ae45f436572d73eb7", - "reference": "e965b9aaa8854c3067f1ed2ae45f436572d73eb7", - "shasum": "" - }, - "require": { - "composer/ca-bundle": "^1.0", - "composer/semver": "^1.0", - "composer/spdx-licenses": "^1.2", - "composer/xdebug-handler": "^1.1", - "justinrainbow/json-schema": "^3.0 || ^4.0 || ^5.0", - "php": "^5.3.2 || ^7.0", - "psr/log": "^1.0", - "seld/jsonlint": "^1.4", - "seld/phar-utils": "^1.0", - "symfony/console": "^2.7 || ^3.0 || ^4.0", - "symfony/filesystem": "^2.7 || ^3.0 || ^4.0", - "symfony/finder": "^2.7 || ^3.0 || ^4.0", - "symfony/process": "^2.7 || ^3.0 || ^4.0" - }, - "conflict": { - "symfony/console": "2.8.38" - }, - "require-dev": { - "phpunit/phpunit": "^4.8.35 || ^5.7", - "phpunit/phpunit-mock-objects": "^2.3 || ^3.0" - }, - "suggest": { - "ext-openssl": "Enabling the openssl extension allows you to access https URLs for repositories and packages", - "ext-zip": "Enabling the zip extension allows you to unzip archives", - "ext-zlib": "Allow gzip compression of HTTP requests" - }, - "bin": [ - "bin/composer" - ], - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.7-dev" - } - }, - "autoload": { - "psr-4": { - "Composer\\": "src/Composer" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nils Adermann", - "email": "naderman@naderman.de", - "homepage": "http://www.naderman.de" - }, - { - "name": "Jordi Boggiano", - "email": "j.boggiano@seld.be", - "homepage": "http://seld.be" - } - ], - "description": "Composer helps you declare, manage and install dependencies of PHP projects, ensuring you have the right stack everywhere.", - "homepage": "https://getcomposer.org/", - "keywords": [ - "autoload", - "dependency", - "package" - ], - "time": "2018-11-01T09:05:06+00:00" - }, - { - "name": "composer/semver", - "version": "1.4.2", - "source": { - "type": "git", - "url": "https://github.com/composer/semver.git", - "reference": "c7cb9a2095a074d131b65a8a0cd294479d785573" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/composer/semver/zipball/c7cb9a2095a074d131b65a8a0cd294479d785573", - "reference": "c7cb9a2095a074d131b65a8a0cd294479d785573", - "shasum": "" - }, - "require": { - "php": "^5.3.2 || ^7.0" - }, - "require-dev": { - "phpunit/phpunit": "^4.5 || ^5.0.5", - "phpunit/phpunit-mock-objects": "2.3.0 || ^3.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.x-dev" - } - }, - "autoload": { - "psr-4": { - "Composer\\Semver\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nils Adermann", - "email": "naderman@naderman.de", - "homepage": "http://www.naderman.de" - }, - { - "name": "Jordi Boggiano", - "email": "j.boggiano@seld.be", - "homepage": "http://seld.be" - }, - { - "name": "Rob Bast", - "email": "rob.bast@gmail.com", - "homepage": "http://robbast.nl" - } - ], - "description": "Semver library that offers utilities, version constraint parsing and validation.", - "keywords": [ - "semantic", - "semver", - "validation", - "versioning" - ], - "time": "2016-08-30T16:08:34+00:00" - }, - { - "name": "composer/spdx-licenses", - "version": "1.5.0", - "source": { - "type": "git", - "url": "https://github.com/composer/spdx-licenses.git", - "reference": "7a9556b22bd9d4df7cad89876b00af58ef20d3a2" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/composer/spdx-licenses/zipball/7a9556b22bd9d4df7cad89876b00af58ef20d3a2", - "reference": "7a9556b22bd9d4df7cad89876b00af58ef20d3a2", - "shasum": "" - }, - "require": { - "php": "^5.3.2 || ^7.0" - }, - "require-dev": { - "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.5", - "phpunit/phpunit-mock-objects": "2.3.0 || ^3.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.x-dev" - } - }, - "autoload": { - "psr-4": { - "Composer\\Spdx\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nils Adermann", - "email": "naderman@naderman.de", - "homepage": "http://www.naderman.de" - }, - { - "name": "Jordi Boggiano", - "email": "j.boggiano@seld.be", - "homepage": "http://seld.be" - }, - { - "name": "Rob Bast", - "email": "rob.bast@gmail.com", - "homepage": "http://robbast.nl" - } - ], - "description": "SPDX licenses list and validation library.", - "keywords": [ - "license", - "spdx", - "validator" - ], - "time": "2018-11-01T09:45:54+00:00" - }, - { - "name": "composer/xdebug-handler", - "version": "1.3.0", - "source": { - "type": "git", - "url": "https://github.com/composer/xdebug-handler.git", - "reference": "b8e9745fb9b06ea6664d8872c4505fb16df4611c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/composer/xdebug-handler/zipball/b8e9745fb9b06ea6664d8872c4505fb16df4611c", - "reference": "b8e9745fb9b06ea6664d8872c4505fb16df4611c", - "shasum": "" - }, - "require": { - "php": "^5.3.2 || ^7.0", - "psr/log": "^1.0" - }, - "require-dev": { - "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.5" - }, - "type": "library", - "autoload": { - "psr-4": { - "Composer\\XdebugHandler\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "John Stevenson", - "email": "john-stevenson@blueyonder.co.uk" - } - ], - "description": "Restarts a process without xdebug.", - "keywords": [ - "Xdebug", - "performance" - ], - "time": "2018-08-31T19:07:57+00:00" - }, - { - "name": "defuse/php-encryption", - "version": "v2.2.1", - "source": { - "type": "git", - "url": "https://github.com/defuse/php-encryption.git", - "reference": "0f407c43b953d571421e0020ba92082ed5fb7620" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/defuse/php-encryption/zipball/0f407c43b953d571421e0020ba92082ed5fb7620", - "reference": "0f407c43b953d571421e0020ba92082ed5fb7620", - "shasum": "" - }, - "require": { - "ext-openssl": "*", - "paragonie/random_compat": ">= 2", - "php": ">=5.4.0" - }, - "require-dev": { - "nikic/php-parser": "^2.0|^3.0|^4.0", - "phpunit/phpunit": "^4|^5" - }, - "bin": [ - "bin/generate-defuse-key" - ], - "type": "library", - "autoload": { - "psr-4": { - "Defuse\\Crypto\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Taylor Hornby", - "email": "taylor@defuse.ca", - "homepage": "https://defuse.ca/" - }, - { - "name": "Scott Arciszewski", - "email": "info@paragonie.com", - "homepage": "https://paragonie.com" - } - ], - "description": "Secure PHP Encryption Library", - "keywords": [ - "aes", - "authenticated encryption", - "cipher", - "crypto", - "cryptography", - "encrypt", - "encryption", - "openssl", - "security", - "symmetric key cryptography" - ], - "time": "2018-07-24T23:27:56+00:00" - }, - { - "name": "doctrine/instantiator", - "version": "1.1.0", - "source": { - "type": "git", - "url": "https://github.com/doctrine/instantiator.git", - "reference": "185b8868aa9bf7159f5f953ed5afb2d7fcdc3bda" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/instantiator/zipball/185b8868aa9bf7159f5f953ed5afb2d7fcdc3bda", - "reference": "185b8868aa9bf7159f5f953ed5afb2d7fcdc3bda", - "shasum": "" - }, - "require": { - "php": "^7.1" - }, - "require-dev": { - "athletic/athletic": "~0.1.8", - "ext-pdo": "*", - "ext-phar": "*", - "phpunit/phpunit": "^6.2.3", - "squizlabs/php_codesniffer": "^3.0.2" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.2.x-dev" - } - }, - "autoload": { - "psr-4": { - "Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Marco Pivetta", - "email": "ocramius@gmail.com", - "homepage": "http://ocramius.github.com/" - } - ], - "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors", - "homepage": "https://github.com/doctrine/instantiator", - "keywords": [ - "constructor", - "instantiate" - ], - "time": "2017-07-22T11:58:36+00:00" - }, - { - "name": "filp/whoops", - "version": "2.3.1", - "source": { - "type": "git", - "url": "https://github.com/filp/whoops.git", - "reference": "bc0fd11bc455cc20ee4b5edabc63ebbf859324c7" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/filp/whoops/zipball/bc0fd11bc455cc20ee4b5edabc63ebbf859324c7", - "reference": "bc0fd11bc455cc20ee4b5edabc63ebbf859324c7", - "shasum": "" - }, - "require": { - "php": "^5.5.9 || ^7.0", - "psr/log": "^1.0.1" - }, - "require-dev": { - "mockery/mockery": "^0.9 || ^1.0", - "phpunit/phpunit": "^4.8.35 || ^5.7", - "symfony/var-dumper": "^2.6 || ^3.0 || ^4.0" - }, - "suggest": { - "symfony/var-dumper": "Pretty print complex values better with var-dumper available", - "whoops/soap": "Formats errors as SOAP responses" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.2-dev" - } - }, - "autoload": { - "psr-4": { - "Whoops\\": "src/Whoops/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Filipe Dobreira", - "homepage": "https://github.com/filp", - "role": "Developer" - } - ], - "description": "php error handling for cool kids", - "homepage": "https://filp.github.io/whoops/", - "keywords": [ - "error", - "exception", - "handling", - "library", - "throwable", - "whoops" - ], - "time": "2018-10-23T09:00:00+00:00" - }, - { - "name": "firebase/php-jwt", - "version": "v5.0.0", - "source": { - "type": "git", - "url": "https://github.com/firebase/php-jwt.git", - "reference": "9984a4d3a32ae7673d6971ea00bae9d0a1abba0e" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/firebase/php-jwt/zipball/9984a4d3a32ae7673d6971ea00bae9d0a1abba0e", - "reference": "9984a4d3a32ae7673d6971ea00bae9d0a1abba0e", - "shasum": "" - }, - "require": { - "php": ">=5.3.0" - }, - "require-dev": { - "phpunit/phpunit": " 4.8.35" - }, - "type": "library", - "autoload": { - "psr-4": { - "Firebase\\JWT\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Neuman Vong", - "email": "neuman+pear@twilio.com", - "role": "Developer" - }, - { - "name": "Anant Narayanan", - "email": "anant@php.net", - "role": "Developer" - } - ], - "description": "A simple library to encode and decode JSON Web Tokens (JWT) in PHP. Should conform to the current spec.", - "homepage": "https://github.com/firebase/php-jwt", - "time": "2017-06-27T22:17:23+00:00" - }, - { - "name": "fzaninotto/faker", - "version": "v1.8.0", - "source": { - "type": "git", - "url": "https://github.com/fzaninotto/Faker.git", - "reference": "f72816b43e74063c8b10357394b6bba8cb1c10de" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/fzaninotto/Faker/zipball/f72816b43e74063c8b10357394b6bba8cb1c10de", - "reference": "f72816b43e74063c8b10357394b6bba8cb1c10de", - "shasum": "" - }, - "require": { - "php": "^5.3.3 || ^7.0" - }, - "require-dev": { - "ext-intl": "*", - "phpunit/phpunit": "^4.8.35 || ^5.7", - "squizlabs/php_codesniffer": "^1.5" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.8-dev" - } - }, - "autoload": { - "psr-4": { - "Faker\\": "src/Faker/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "François Zaninotto" - } - ], - "description": "Faker is a PHP library that generates fake data for you.", - "keywords": [ - "data", - "faker", - "fixtures" - ], - "time": "2018-07-12T10:23:15+00:00" - }, - { - "name": "hamcrest/hamcrest-php", - "version": "v2.0.0", - "source": { - "type": "git", - "url": "https://github.com/hamcrest/hamcrest-php.git", - "reference": "776503d3a8e85d4f9a1148614f95b7a608b046ad" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/hamcrest/hamcrest-php/zipball/776503d3a8e85d4f9a1148614f95b7a608b046ad", - "reference": "776503d3a8e85d4f9a1148614f95b7a608b046ad", - "shasum": "" - }, - "require": { - "php": "^5.3|^7.0" - }, - "replace": { - "cordoval/hamcrest-php": "*", - "davedevelopment/hamcrest-php": "*", - "kodova/hamcrest-php": "*" - }, - "require-dev": { - "phpunit/php-file-iterator": "1.3.3", - "phpunit/phpunit": "~4.0", - "satooshi/php-coveralls": "^1.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.0-dev" - } - }, - "autoload": { - "classmap": [ - "hamcrest" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD" - ], - "description": "This is the PHP port of Hamcrest Matchers", - "keywords": [ - "test" - ], - "time": "2016-01-20T08:20:44+00:00" - }, - { - "name": "justinrainbow/json-schema", - "version": "5.2.7", - "source": { - "type": "git", - "url": "https://github.com/justinrainbow/json-schema.git", - "reference": "8560d4314577199ba51bf2032f02cd1315587c23" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/justinrainbow/json-schema/zipball/8560d4314577199ba51bf2032f02cd1315587c23", - "reference": "8560d4314577199ba51bf2032f02cd1315587c23", - "shasum": "" - }, - "require": { - "php": ">=5.3.3" - }, - "require-dev": { - "friendsofphp/php-cs-fixer": "^2.1", - "json-schema/json-schema-test-suite": "1.2.0", - "phpunit/phpunit": "^4.8.35" - }, - "bin": [ - "bin/validate-json" - ], - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "5.0.x-dev" - } - }, - "autoload": { - "psr-4": { - "JsonSchema\\": "src/JsonSchema/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Bruno Prieto Reis", - "email": "bruno.p.reis@gmail.com" - }, - { - "name": "Justin Rainbow", - "email": "justin.rainbow@gmail.com" - }, - { - "name": "Igor Wiedler", - "email": "igor@wiedler.ch" - }, - { - "name": "Robert Schönthal", - "email": "seroscho@googlemail.com" - } - ], - "description": "A library to validate a json schema.", - "homepage": "https://github.com/justinrainbow/json-schema", - "keywords": [ - "json", - "schema" - ], - "time": "2018-02-14T22:26:30+00:00" - }, - { - "name": "laracasts/generators", - "version": "dev-master", - "source": { - "type": "git", - "url": "https://github.com/laracasts/Laravel-5-Generators-Extended.git", - "reference": "9c6066252b9181b61e0ab6f5361fbf508bc78313" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laracasts/Laravel-5-Generators-Extended/zipball/9c6066252b9181b61e0ab6f5361fbf508bc78313", - "reference": "9c6066252b9181b61e0ab6f5361fbf508bc78313", - "shasum": "" - }, - "require": { - "illuminate/support": "~5.0", - "php": ">=5.4.0" - }, - "require-dev": { - "phpspec/phpspec": "~2.1" - }, - "type": "library", - "extra": { - "laravel": { - "providers": [ - "Laracasts\\Generators\\GeneratorsServiceProvider" - ] - } - }, - "autoload": { - "psr-4": { - "Laracasts\\Generators\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Jeffrey Way", - "email": "jeffrey@laracasts.com" - } - ], - "description": "Extend Laravel 5's generators.", - "keywords": [ - "generators", - "laravel" - ], - "time": "2018-05-07T06:29:34+00:00" - }, - { - "name": "laravel/passport", - "version": "v7.5.1", - "source": { - "type": "git", - "url": "https://github.com/laravel/passport.git", - "reference": "d63cdd672c3d65b3c35b73d0ef13a9dbfcb71c08" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laravel/passport/zipball/d63cdd672c3d65b3c35b73d0ef13a9dbfcb71c08", - "reference": "d63cdd672c3d65b3c35b73d0ef13a9dbfcb71c08", - "shasum": "" - }, - "require": { - "ext-json": "*", - "firebase/php-jwt": "~3.0|~4.0|~5.0", - "guzzlehttp/guzzle": "~6.0", - "illuminate/auth": "~5.6.0|~5.7.0|~5.8.0|^6.0|^7.0", - "illuminate/console": "~5.6.0|~5.7.0|~5.8.0|^6.0|^7.0", - "illuminate/container": "~5.6.0|~5.7.0|~5.8.0|^6.0|^7.0", - "illuminate/contracts": "~5.6.0|~5.7.0|~5.8.0|^6.0|^7.0", - "illuminate/cookie": "~5.6.0|~5.7.0|~5.8.0|^6.0|^7.0", - "illuminate/database": "~5.6.0|~5.7.0|~5.8.0|^6.0|^7.0", - "illuminate/encryption": "~5.6.0|~5.7.0|~5.8.0|^6.0|^7.0", - "illuminate/http": "~5.6.0|~5.7.0|~5.8.0|^6.0|^7.0", - "illuminate/support": "~5.6.0|~5.7.0|~5.8.0|^6.0|^7.0", - "league/oauth2-server": "^7.0", - "php": ">=7.1", - "phpseclib/phpseclib": "^2.0", - "symfony/psr-http-message-bridge": "~1.0", - "zendframework/zend-diactoros": "~1.0|~2.0" - }, - "require-dev": { - "mockery/mockery": "^1.0", - "phpunit/phpunit": "^7.4|^8.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "7.0-dev" - }, - "laravel": { - "providers": [ - "Laravel\\Passport\\PassportServiceProvider" - ] - } - }, - "autoload": { - "psr-4": { - "Laravel\\Passport\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Taylor Otwell", - "email": "taylor@laravel.com" - } - ], - "description": "Laravel Passport provides OAuth2 server support to Laravel.", - "keywords": [ - "laravel", - "oauth", - "passport" - ], - "time": "2019-10-08T16:45:24+00:00" - }, - { - "name": "league/event", - "version": "2.2.0", - "source": { - "type": "git", - "url": "https://github.com/thephpleague/event.git", - "reference": "d2cc124cf9a3fab2bb4ff963307f60361ce4d119" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/thephpleague/event/zipball/d2cc124cf9a3fab2bb4ff963307f60361ce4d119", - "reference": "d2cc124cf9a3fab2bb4ff963307f60361ce4d119", - "shasum": "" - }, - "require": { - "php": ">=5.4.0" - }, - "require-dev": { - "henrikbjorn/phpspec-code-coverage": "~1.0.1", - "phpspec/phpspec": "^2.2" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.2-dev" - } - }, - "autoload": { - "psr-4": { - "League\\Event\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Frank de Jonge", - "email": "info@frenky.net" - } - ], - "description": "Event package", - "keywords": [ - "emitter", - "event", - "listener" - ], - "time": "2018-11-26T11:52:41+00:00" - }, - { - "name": "league/oauth2-server", - "version": "7.4.0", - "source": { - "type": "git", - "url": "https://github.com/thephpleague/oauth2-server.git", - "reference": "2eb1cf79e59d807d89c256e7ac5e2bf8bdbd4acf" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/thephpleague/oauth2-server/zipball/2eb1cf79e59d807d89c256e7ac5e2bf8bdbd4acf", - "reference": "2eb1cf79e59d807d89c256e7ac5e2bf8bdbd4acf", - "shasum": "" - }, - "require": { - "defuse/php-encryption": "^2.1", - "ext-openssl": "*", - "lcobucci/jwt": "^3.2.2", - "league/event": "^2.1", - "php": ">=7.0.0", - "psr/http-message": "^1.0.1" - }, - "replace": { - "league/oauth2server": "*", - "lncd/oauth2": "*" - }, - "require-dev": { - "phpstan/phpstan": "^0.9.2", - "phpstan/phpstan-phpunit": "^0.9.4", - "phpstan/phpstan-strict-rules": "^0.9.0", - "phpunit/phpunit": "^6.3 || ^7.0", - "roave/security-advisories": "dev-master", - "zendframework/zend-diactoros": "^1.3.2" - }, - "type": "library", - "autoload": { - "psr-4": { - "League\\OAuth2\\Server\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Alex Bilbie", - "email": "hello@alexbilbie.com", - "homepage": "http://www.alexbilbie.com", - "role": "Developer" - }, - { - "name": "Andy Millington", - "email": "andrew@noexceptions.io", - "homepage": "https://www.noexceptions.io", - "role": "Developer" - } - ], - "description": "A lightweight and powerful OAuth 2.0 authorization and resource server library with support for all the core specification grants. This library will allow you to secure your API with OAuth and allow your applications users to approve apps that want to access their data from your API.", - "homepage": "https://oauth2.thephpleague.com/", - "keywords": [ - "Authentication", - "api", - "auth", - "authorisation", - "authorization", - "oauth", - "oauth 2", - "oauth 2.0", - "oauth2", - "protect", - "resource", - "secure", - "server" - ], - "time": "2019-05-05T09:22:01+00:00" - }, - { - "name": "maximebf/debugbar", - "version": "v1.15.0", - "source": { - "type": "git", - "url": "https://github.com/maximebf/php-debugbar.git", - "reference": "30e7d60937ee5f1320975ca9bc7bcdd44d500f07" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/maximebf/php-debugbar/zipball/30e7d60937ee5f1320975ca9bc7bcdd44d500f07", - "reference": "30e7d60937ee5f1320975ca9bc7bcdd44d500f07", - "shasum": "" - }, - "require": { - "php": ">=5.3.0", - "psr/log": "^1.0", - "symfony/var-dumper": "^2.6|^3.0|^4.0" - }, - "require-dev": { - "phpunit/phpunit": "^4.0|^5.0" - }, - "suggest": { - "kriswallsmith/assetic": "The best way to manage assets", - "monolog/monolog": "Log using Monolog", - "predis/predis": "Redis storage" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.14-dev" - } - }, - "autoload": { - "psr-4": { - "DebugBar\\": "src/DebugBar/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Maxime Bouroumeau-Fuseau", - "email": "maxime.bouroumeau@gmail.com", - "homepage": "http://maximebf.com" - }, - { - "name": "Barry vd. Heuvel", - "email": "barryvdh@gmail.com" - } - ], - "description": "Debug bar in the browser for php application", - "homepage": "https://github.com/maximebf/php-debugbar", - "keywords": [ - "debug", - "debugbar" - ], - "time": "2017-12-15T11:13:46+00:00" - }, - { - "name": "mockery/mockery", - "version": "1.2.0", - "source": { - "type": "git", - "url": "https://github.com/mockery/mockery.git", - "reference": "100633629bf76d57430b86b7098cd6beb996a35a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/mockery/mockery/zipball/100633629bf76d57430b86b7098cd6beb996a35a", - "reference": "100633629bf76d57430b86b7098cd6beb996a35a", - "shasum": "" - }, - "require": { - "hamcrest/hamcrest-php": "~2.0", - "lib-pcre": ">=7.0", - "php": ">=5.6.0" - }, - "require-dev": { - "phpunit/phpunit": "~5.7.10|~6.5|~7.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev" - } - }, - "autoload": { - "psr-0": { - "Mockery": "library/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Pádraic Brady", - "email": "padraic.brady@gmail.com", - "homepage": "http://blog.astrumfutura.com" - }, - { - "name": "Dave Marshall", - "email": "dave.marshall@atstsolutions.co.uk", - "homepage": "http://davedevelopment.co.uk" - } - ], - "description": "Mockery is a simple yet flexible PHP mock object framework", - "homepage": "https://github.com/mockery/mockery", - "keywords": [ - "BDD", - "TDD", - "library", - "mock", - "mock objects", - "mockery", - "stub", - "test", - "test double", - "testing" - ], - "time": "2018-10-02T21:52:37+00:00" - }, - { - "name": "phar-io/manifest", - "version": "1.0.1", - "source": { - "type": "git", - "url": "https://github.com/phar-io/manifest.git", - "reference": "2df402786ab5368a0169091f61a7c1e0eb6852d0" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phar-io/manifest/zipball/2df402786ab5368a0169091f61a7c1e0eb6852d0", - "reference": "2df402786ab5368a0169091f61a7c1e0eb6852d0", - "shasum": "" - }, - "require": { - "ext-dom": "*", - "ext-phar": "*", - "phar-io/version": "^1.0.1", - "php": "^5.6 || ^7.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Arne Blankerts", - "email": "arne@blankerts.de", - "role": "Developer" - }, - { - "name": "Sebastian Heuer", - "email": "sebastian@phpeople.de", - "role": "Developer" - }, - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "Developer" - } - ], - "description": "Component for reading phar.io manifest information from a PHP Archive (PHAR)", - "time": "2017-03-05T18:14:27+00:00" - }, - { - "name": "phar-io/version", - "version": "1.0.1", - "source": { - "type": "git", - "url": "https://github.com/phar-io/version.git", - "reference": "a70c0ced4be299a63d32fa96d9281d03e94041df" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phar-io/version/zipball/a70c0ced4be299a63d32fa96d9281d03e94041df", - "reference": "a70c0ced4be299a63d32fa96d9281d03e94041df", - "shasum": "" - }, - "require": { - "php": "^5.6 || ^7.0" - }, - "type": "library", - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Arne Blankerts", - "email": "arne@blankerts.de", - "role": "Developer" - }, - { - "name": "Sebastian Heuer", - "email": "sebastian@phpeople.de", - "role": "Developer" - }, - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "Developer" - } - ], - "description": "Library for handling version information and constraints", - "time": "2017-03-05T17:38:23+00:00" - }, - { - "name": "phpdocumentor/reflection-common", - "version": "1.0.1", - "source": { - "type": "git", - "url": "https://github.com/phpDocumentor/ReflectionCommon.git", - "reference": "21bdeb5f65d7ebf9f43b1b25d404f87deab5bfb6" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/21bdeb5f65d7ebf9f43b1b25d404f87deab5bfb6", - "reference": "21bdeb5f65d7ebf9f43b1b25d404f87deab5bfb6", - "shasum": "" - }, - "require": { - "php": ">=5.5" - }, - "require-dev": { - "phpunit/phpunit": "^4.6" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev" - } - }, - "autoload": { - "psr-4": { - "phpDocumentor\\Reflection\\": [ - "src" - ] - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Jaap van Otterdijk", - "email": "opensource@ijaap.nl" - } - ], - "description": "Common reflection classes used by phpdocumentor to reflect the code structure", - "homepage": "http://www.phpdoc.org", - "keywords": [ - "FQSEN", - "phpDocumentor", - "phpdoc", - "reflection", - "static analysis" - ], - "time": "2017-09-11T18:02:19+00:00" - }, - { - "name": "phpdocumentor/reflection-docblock", - "version": "4.3.0", - "source": { - "type": "git", - "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git", - "reference": "94fd0001232e47129dd3504189fa1c7225010d08" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/94fd0001232e47129dd3504189fa1c7225010d08", - "reference": "94fd0001232e47129dd3504189fa1c7225010d08", - "shasum": "" - }, - "require": { - "php": "^7.0", - "phpdocumentor/reflection-common": "^1.0.0", - "phpdocumentor/type-resolver": "^0.4.0", - "webmozart/assert": "^1.0" - }, - "require-dev": { - "doctrine/instantiator": "~1.0.5", - "mockery/mockery": "^1.0", - "phpunit/phpunit": "^6.4" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.x-dev" - } - }, - "autoload": { - "psr-4": { - "phpDocumentor\\Reflection\\": [ - "src/" - ] - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Mike van Riel", - "email": "me@mikevanriel.com" - } - ], - "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.", - "time": "2017-11-30T07:14:17+00:00" - }, - { - "name": "phpdocumentor/type-resolver", - "version": "0.4.0", - "source": { - "type": "git", - "url": "https://github.com/phpDocumentor/TypeResolver.git", - "reference": "9c977708995954784726e25d0cd1dddf4e65b0f7" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/9c977708995954784726e25d0cd1dddf4e65b0f7", - "reference": "9c977708995954784726e25d0cd1dddf4e65b0f7", - "shasum": "" - }, - "require": { - "php": "^5.5 || ^7.0", - "phpdocumentor/reflection-common": "^1.0" - }, - "require-dev": { - "mockery/mockery": "^0.9.4", - "phpunit/phpunit": "^5.2||^4.8.24" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev" - } - }, - "autoload": { - "psr-4": { - "phpDocumentor\\Reflection\\": [ - "src/" - ] - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Mike van Riel", - "email": "me@mikevanriel.com" - } - ], - "time": "2017-07-14T14:27:02+00:00" - }, - { - "name": "phpseclib/phpseclib", - "version": "2.0.23", - "source": { - "type": "git", - "url": "https://github.com/phpseclib/phpseclib.git", - "reference": "c78eb5058d5bb1a183133c36d4ba5b6675dfa099" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpseclib/phpseclib/zipball/c78eb5058d5bb1a183133c36d4ba5b6675dfa099", - "reference": "c78eb5058d5bb1a183133c36d4ba5b6675dfa099", - "shasum": "" - }, - "require": { - "php": ">=5.3.3" - }, - "require-dev": { - "phing/phing": "~2.7", - "phpunit/phpunit": "^4.8.35|^5.7|^6.0", - "sami/sami": "~2.0", - "squizlabs/php_codesniffer": "~2.0" - }, - "suggest": { - "ext-gmp": "Install the GMP (GNU Multiple Precision) extension in order to speed up arbitrary precision integer arithmetic operations.", - "ext-libsodium": "SSH2/SFTP can make use of some algorithms provided by the libsodium-php extension.", - "ext-mcrypt": "Install the Mcrypt extension in order to speed up a few other cryptographic operations.", - "ext-openssl": "Install the OpenSSL extension in order to speed up a wide variety of cryptographic operations." - }, - "type": "library", - "autoload": { - "files": [ - "phpseclib/bootstrap.php" - ], - "psr-4": { - "phpseclib\\": "phpseclib/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Jim Wigginton", - "email": "terrafrost@php.net", - "role": "Lead Developer" - }, - { - "name": "Patrick Monnerat", - "email": "pm@datasphere.ch", - "role": "Developer" - }, - { - "name": "Andreas Fischer", - "email": "bantu@phpbb.com", - "role": "Developer" - }, - { - "name": "Hans-Jürgen Petrich", - "email": "petrich@tronic-media.com", - "role": "Developer" - }, - { - "name": "Graham Campbell", - "email": "graham@alt-three.com", - "role": "Developer" - } - ], - "description": "PHP Secure Communications Library - Pure-PHP implementations of RSA, AES, SSH2, SFTP, X.509 etc.", - "homepage": "http://phpseclib.sourceforge.net", - "keywords": [ - "BigInteger", - "aes", - "asn.1", - "asn1", - "blowfish", - "crypto", - "cryptography", - "encryption", - "rsa", - "security", - "sftp", - "signature", - "signing", - "ssh", - "twofish", - "x.509", - "x509" - ], - "time": "2019-09-17T03:41:22+00:00" - }, - { - "name": "phpspec/prophecy", - "version": "1.8.0", - "source": { - "type": "git", - "url": "https://github.com/phpspec/prophecy.git", - "reference": "4ba436b55987b4bf311cb7c6ba82aa528aac0a06" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpspec/prophecy/zipball/4ba436b55987b4bf311cb7c6ba82aa528aac0a06", - "reference": "4ba436b55987b4bf311cb7c6ba82aa528aac0a06", - "shasum": "" - }, - "require": { - "doctrine/instantiator": "^1.0.2", - "php": "^5.3|^7.0", - "phpdocumentor/reflection-docblock": "^2.0|^3.0.2|^4.0", - "sebastian/comparator": "^1.1|^2.0|^3.0", - "sebastian/recursion-context": "^1.0|^2.0|^3.0" - }, - "require-dev": { - "phpspec/phpspec": "^2.5|^3.2", - "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.5 || ^7.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.8.x-dev" - } - }, - "autoload": { - "psr-0": { - "Prophecy\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Konstantin Kudryashov", - "email": "ever.zet@gmail.com", - "homepage": "http://everzet.com" - }, - { - "name": "Marcello Duarte", - "email": "marcello.duarte@gmail.com" - } - ], - "description": "Highly opinionated mocking framework for PHP 5.3+", - "homepage": "https://github.com/phpspec/prophecy", - "keywords": [ - "Double", - "Dummy", - "fake", - "mock", - "spy", - "stub" - ], - "time": "2018-08-05T17:53:17+00:00" - }, - { - "name": "phpunit/php-code-coverage", - "version": "5.3.2", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-code-coverage.git", - "reference": "c89677919c5dd6d3b3852f230a663118762218ac" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/c89677919c5dd6d3b3852f230a663118762218ac", - "reference": "c89677919c5dd6d3b3852f230a663118762218ac", - "shasum": "" - }, - "require": { - "ext-dom": "*", - "ext-xmlwriter": "*", - "php": "^7.0", - "phpunit/php-file-iterator": "^1.4.2", - "phpunit/php-text-template": "^1.2.1", - "phpunit/php-token-stream": "^2.0.1", - "sebastian/code-unit-reverse-lookup": "^1.0.1", - "sebastian/environment": "^3.0", - "sebastian/version": "^2.0.1", - "theseer/tokenizer": "^1.1" - }, - "require-dev": { - "phpunit/phpunit": "^6.0" - }, - "suggest": { - "ext-xdebug": "^2.5.5" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "5.3.x-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "Library that provides collection, processing, and rendering functionality for PHP code coverage information.", - "homepage": "https://github.com/sebastianbergmann/php-code-coverage", - "keywords": [ - "coverage", - "testing", - "xunit" - ], - "time": "2018-04-06T15:36:58+00:00" - }, - { - "name": "phpunit/php-file-iterator", - "version": "1.4.5", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-file-iterator.git", - "reference": "730b01bc3e867237eaac355e06a36b85dd93a8b4" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/730b01bc3e867237eaac355e06a36b85dd93a8b4", - "reference": "730b01bc3e867237eaac355e06a36b85dd93a8b4", - "shasum": "" - }, - "require": { - "php": ">=5.3.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.4.x-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sb@sebastian-bergmann.de", - "role": "lead" - } - ], - "description": "FilterIterator implementation that filters files based on a list of suffixes.", - "homepage": "https://github.com/sebastianbergmann/php-file-iterator/", - "keywords": [ - "filesystem", - "iterator" - ], - "time": "2017-11-27T13:52:08+00:00" - }, - { - "name": "phpunit/php-text-template", - "version": "1.2.1", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-text-template.git", - "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/31f8b717e51d9a2afca6c9f046f5d69fc27c8686", - "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686", - "shasum": "" - }, - "require": { - "php": ">=5.3.3" - }, - "type": "library", - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "Simple template engine.", - "homepage": "https://github.com/sebastianbergmann/php-text-template/", - "keywords": [ - "template" - ], - "time": "2015-06-21T13:50:34+00:00" - }, - { - "name": "phpunit/php-timer", - "version": "1.0.9", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-timer.git", - "reference": "3dcf38ca72b158baf0bc245e9184d3fdffa9c46f" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/3dcf38ca72b158baf0bc245e9184d3fdffa9c46f", - "reference": "3dcf38ca72b158baf0bc245e9184d3fdffa9c46f", - "shasum": "" - }, - "require": { - "php": "^5.3.3 || ^7.0" - }, - "require-dev": { - "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sb@sebastian-bergmann.de", - "role": "lead" - } - ], - "description": "Utility class for timing", - "homepage": "https://github.com/sebastianbergmann/php-timer/", - "keywords": [ - "timer" - ], - "time": "2017-02-26T11:10:40+00:00" - }, - { - "name": "phpunit/php-token-stream", - "version": "2.0.2", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-token-stream.git", - "reference": "791198a2c6254db10131eecfe8c06670700904db" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/791198a2c6254db10131eecfe8c06670700904db", - "reference": "791198a2c6254db10131eecfe8c06670700904db", - "shasum": "" - }, - "require": { - "ext-tokenizer": "*", - "php": "^7.0" - }, - "require-dev": { - "phpunit/phpunit": "^6.2.4" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - } - ], - "description": "Wrapper around PHP's tokenizer extension.", - "homepage": "https://github.com/sebastianbergmann/php-token-stream/", - "keywords": [ - "tokenizer" - ], - "time": "2017-11-27T05:48:46+00:00" - }, - { - "name": "phpunit/phpunit", - "version": "6.5.13", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "0973426fb012359b2f18d3bd1e90ef1172839693" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/0973426fb012359b2f18d3bd1e90ef1172839693", - "reference": "0973426fb012359b2f18d3bd1e90ef1172839693", - "shasum": "" - }, - "require": { - "ext-dom": "*", - "ext-json": "*", - "ext-libxml": "*", - "ext-mbstring": "*", - "ext-xml": "*", - "myclabs/deep-copy": "^1.6.1", - "phar-io/manifest": "^1.0.1", - "phar-io/version": "^1.0", - "php": "^7.0", - "phpspec/prophecy": "^1.7", - "phpunit/php-code-coverage": "^5.3", - "phpunit/php-file-iterator": "^1.4.3", - "phpunit/php-text-template": "^1.2.1", - "phpunit/php-timer": "^1.0.9", - "phpunit/phpunit-mock-objects": "^5.0.9", - "sebastian/comparator": "^2.1", - "sebastian/diff": "^2.0", - "sebastian/environment": "^3.1", - "sebastian/exporter": "^3.1", - "sebastian/global-state": "^2.0", - "sebastian/object-enumerator": "^3.0.3", - "sebastian/resource-operations": "^1.0", - "sebastian/version": "^2.0.1" - }, - "conflict": { - "phpdocumentor/reflection-docblock": "3.0.2", - "phpunit/dbunit": "<3.0" - }, - "require-dev": { - "ext-pdo": "*" - }, - "suggest": { - "ext-xdebug": "*", - "phpunit/php-invoker": "^1.1" - }, - "bin": [ - "phpunit" - ], - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "6.5.x-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "The PHP Unit Testing framework.", - "homepage": "https://phpunit.de/", - "keywords": [ - "phpunit", - "testing", - "xunit" - ], - "time": "2018-09-08T15:10:43+00:00" - }, - { - "name": "phpunit/phpunit-mock-objects", - "version": "5.0.10", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/phpunit-mock-objects.git", - "reference": "cd1cf05c553ecfec36b170070573e540b67d3f1f" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit-mock-objects/zipball/cd1cf05c553ecfec36b170070573e540b67d3f1f", - "reference": "cd1cf05c553ecfec36b170070573e540b67d3f1f", - "shasum": "" - }, - "require": { - "doctrine/instantiator": "^1.0.5", - "php": "^7.0", - "phpunit/php-text-template": "^1.2.1", - "sebastian/exporter": "^3.1" - }, - "conflict": { - "phpunit/phpunit": "<6.0" - }, - "require-dev": { - "phpunit/phpunit": "^6.5.11" - }, - "suggest": { - "ext-soap": "*" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "5.0.x-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "Mock Object library for PHPUnit", - "homepage": "https://github.com/sebastianbergmann/phpunit-mock-objects/", - "keywords": [ - "mock", - "xunit" - ], - "abandoned": true, - "time": "2018-08-09T05:50:03+00:00" - }, - { - "name": "sebastian/code-unit-reverse-lookup", - "version": "1.0.1", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git", - "reference": "4419fcdb5eabb9caa61a27c7a1db532a6b55dd18" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/4419fcdb5eabb9caa61a27c7a1db532a6b55dd18", - "reference": "4419fcdb5eabb9caa61a27c7a1db532a6b55dd18", - "shasum": "" - }, - "require": { - "php": "^5.6 || ^7.0" - }, - "require-dev": { - "phpunit/phpunit": "^5.7 || ^6.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - } - ], - "description": "Looks up which function or method a line of code belongs to", - "homepage": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/", - "time": "2017-03-04T06:30:41+00:00" - }, - { - "name": "sebastian/comparator", - "version": "2.1.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/comparator.git", - "reference": "34369daee48eafb2651bea869b4b15d75ccc35f9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/34369daee48eafb2651bea869b4b15d75ccc35f9", - "reference": "34369daee48eafb2651bea869b4b15d75ccc35f9", - "shasum": "" - }, - "require": { - "php": "^7.0", - "sebastian/diff": "^2.0 || ^3.0", - "sebastian/exporter": "^3.1" - }, - "require-dev": { - "phpunit/phpunit": "^6.4" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.1.x-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Jeff Welch", - "email": "whatthejeff@gmail.com" - }, - { - "name": "Volker Dusch", - "email": "github@wallbash.com" - }, - { - "name": "Bernhard Schussek", - "email": "bschussek@2bepublished.at" - }, - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - } - ], - "description": "Provides the functionality to compare PHP values for equality", - "homepage": "https://github.com/sebastianbergmann/comparator", - "keywords": [ - "comparator", - "compare", - "equality" - ], - "time": "2018-02-01T13:46:46+00:00" - }, - { - "name": "sebastian/diff", - "version": "2.0.1", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/diff.git", - "reference": "347c1d8b49c5c3ee30c7040ea6fc446790e6bddd" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/347c1d8b49c5c3ee30c7040ea6fc446790e6bddd", - "reference": "347c1d8b49c5c3ee30c7040ea6fc446790e6bddd", - "shasum": "" - }, - "require": { - "php": "^7.0" - }, - "require-dev": { - "phpunit/phpunit": "^6.2" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Kore Nordmann", - "email": "mail@kore-nordmann.de" - }, - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - } - ], - "description": "Diff implementation", - "homepage": "https://github.com/sebastianbergmann/diff", - "keywords": [ - "diff" - ], - "time": "2017-08-03T08:09:46+00:00" - }, - { - "name": "sebastian/environment", - "version": "3.1.0", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/environment.git", - "reference": "cd0871b3975fb7fc44d11314fd1ee20925fce4f5" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/cd0871b3975fb7fc44d11314fd1ee20925fce4f5", - "reference": "cd0871b3975fb7fc44d11314fd1ee20925fce4f5", - "shasum": "" - }, - "require": { - "php": "^7.0" - }, - "require-dev": { - "phpunit/phpunit": "^6.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.1.x-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - } - ], - "description": "Provides functionality to handle HHVM/PHP environments", - "homepage": "http://www.github.com/sebastianbergmann/environment", - "keywords": [ - "Xdebug", - "environment", - "hhvm" - ], - "time": "2017-07-01T08:51:00+00:00" - }, - { - "name": "sebastian/exporter", - "version": "3.1.0", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/exporter.git", - "reference": "234199f4528de6d12aaa58b612e98f7d36adb937" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/234199f4528de6d12aaa58b612e98f7d36adb937", - "reference": "234199f4528de6d12aaa58b612e98f7d36adb937", - "shasum": "" - }, - "require": { - "php": "^7.0", - "sebastian/recursion-context": "^3.0" - }, - "require-dev": { - "ext-mbstring": "*", - "phpunit/phpunit": "^6.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.1.x-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Jeff Welch", - "email": "whatthejeff@gmail.com" - }, - { - "name": "Volker Dusch", - "email": "github@wallbash.com" - }, - { - "name": "Bernhard Schussek", - "email": "bschussek@2bepublished.at" - }, - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - }, - { - "name": "Adam Harvey", - "email": "aharvey@php.net" - } - ], - "description": "Provides the functionality to export PHP variables for visualization", - "homepage": "http://www.github.com/sebastianbergmann/exporter", - "keywords": [ - "export", - "exporter" - ], - "time": "2017-04-03T13:19:02+00:00" - }, - { - "name": "sebastian/global-state", - "version": "2.0.0", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/global-state.git", - "reference": "e8ba02eed7bbbb9e59e43dedd3dddeff4a56b0c4" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/e8ba02eed7bbbb9e59e43dedd3dddeff4a56b0c4", - "reference": "e8ba02eed7bbbb9e59e43dedd3dddeff4a56b0c4", - "shasum": "" - }, - "require": { - "php": "^7.0" - }, - "require-dev": { - "phpunit/phpunit": "^6.0" - }, - "suggest": { - "ext-uopz": "*" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - } - ], - "description": "Snapshotting of global state", - "homepage": "http://www.github.com/sebastianbergmann/global-state", - "keywords": [ - "global state" - ], - "time": "2017-04-27T15:39:26+00:00" - }, - { - "name": "sebastian/object-enumerator", - "version": "3.0.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/object-enumerator.git", - "reference": "7cfd9e65d11ffb5af41198476395774d4c8a84c5" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/7cfd9e65d11ffb5af41198476395774d4c8a84c5", - "reference": "7cfd9e65d11ffb5af41198476395774d4c8a84c5", - "shasum": "" - }, - "require": { - "php": "^7.0", - "sebastian/object-reflector": "^1.1.1", - "sebastian/recursion-context": "^3.0" - }, - "require-dev": { - "phpunit/phpunit": "^6.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.0.x-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - } - ], - "description": "Traverses array structures and object graphs to enumerate all referenced objects", - "homepage": "https://github.com/sebastianbergmann/object-enumerator/", - "time": "2017-08-03T12:35:26+00:00" - }, - { - "name": "sebastian/object-reflector", - "version": "1.1.1", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/object-reflector.git", - "reference": "773f97c67f28de00d397be301821b06708fca0be" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/773f97c67f28de00d397be301821b06708fca0be", - "reference": "773f97c67f28de00d397be301821b06708fca0be", - "shasum": "" - }, - "require": { - "php": "^7.0" - }, - "require-dev": { - "phpunit/phpunit": "^6.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.1-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - } - ], - "description": "Allows reflection of object attributes, including inherited and non-public ones", - "homepage": "https://github.com/sebastianbergmann/object-reflector/", - "time": "2017-03-29T09:07:27+00:00" - }, - { - "name": "sebastian/recursion-context", - "version": "3.0.0", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/recursion-context.git", - "reference": "5b0cd723502bac3b006cbf3dbf7a1e3fcefe4fa8" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/5b0cd723502bac3b006cbf3dbf7a1e3fcefe4fa8", - "reference": "5b0cd723502bac3b006cbf3dbf7a1e3fcefe4fa8", - "shasum": "" - }, - "require": { - "php": "^7.0" - }, - "require-dev": { - "phpunit/phpunit": "^6.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.0.x-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Jeff Welch", - "email": "whatthejeff@gmail.com" - }, - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - }, - { - "name": "Adam Harvey", - "email": "aharvey@php.net" - } - ], - "description": "Provides functionality to recursively process PHP variables", - "homepage": "http://www.github.com/sebastianbergmann/recursion-context", - "time": "2017-03-03T06:23:57+00:00" - }, - { - "name": "sebastian/resource-operations", - "version": "1.0.0", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/resource-operations.git", - "reference": "ce990bb21759f94aeafd30209e8cfcdfa8bc3f52" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/ce990bb21759f94aeafd30209e8cfcdfa8bc3f52", - "reference": "ce990bb21759f94aeafd30209e8cfcdfa8bc3f52", - "shasum": "" - }, - "require": { - "php": ">=5.6.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - } - ], - "description": "Provides a list of PHP built-in functions that operate on resources", - "homepage": "https://www.github.com/sebastianbergmann/resource-operations", - "time": "2015-07-28T20:34:47+00:00" - }, - { - "name": "sebastian/version", - "version": "2.0.1", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/version.git", - "reference": "99732be0ddb3361e16ad77b68ba41efc8e979019" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/99732be0ddb3361e16ad77b68ba41efc8e979019", - "reference": "99732be0ddb3361e16ad77b68ba41efc8e979019", - "shasum": "" - }, - "require": { - "php": ">=5.6" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.0.x-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "Library that helps with managing the version number of Git-hosted PHP projects", - "homepage": "https://github.com/sebastianbergmann/version", - "time": "2016-10-03T07:35:21+00:00" - }, - { - "name": "seld/jsonlint", - "version": "1.7.1", - "source": { - "type": "git", - "url": "https://github.com/Seldaek/jsonlint.git", - "reference": "d15f59a67ff805a44c50ea0516d2341740f81a38" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/Seldaek/jsonlint/zipball/d15f59a67ff805a44c50ea0516d2341740f81a38", - "reference": "d15f59a67ff805a44c50ea0516d2341740f81a38", - "shasum": "" - }, - "require": { - "php": "^5.3 || ^7.0" - }, - "require-dev": { - "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0" - }, - "bin": [ - "bin/jsonlint" - ], - "type": "library", - "autoload": { - "psr-4": { - "Seld\\JsonLint\\": "src/Seld/JsonLint/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Jordi Boggiano", - "email": "j.boggiano@seld.be", - "homepage": "http://seld.be" - } - ], - "description": "JSON Linter", - "keywords": [ - "json", - "linter", - "parser", - "validator" - ], - "time": "2018-01-24T12:46:19+00:00" - }, - { - "name": "seld/phar-utils", - "version": "1.0.1", - "source": { - "type": "git", - "url": "https://github.com/Seldaek/phar-utils.git", - "reference": "7009b5139491975ef6486545a39f3e6dad5ac30a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/Seldaek/phar-utils/zipball/7009b5139491975ef6486545a39f3e6dad5ac30a", - "reference": "7009b5139491975ef6486545a39f3e6dad5ac30a", - "shasum": "" - }, - "require": { - "php": ">=5.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.x-dev" - } - }, - "autoload": { - "psr-4": { - "Seld\\PharUtils\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Jordi Boggiano", - "email": "j.boggiano@seld.be" - } - ], - "description": "PHAR file format utilities, for when PHP phars you up", - "keywords": [ - "phra" - ], - "time": "2015-10-13T18:44:15+00:00" - }, - { - "name": "symfony/filesystem", - "version": "v4.1.8", - "source": { - "type": "git", - "url": "https://github.com/symfony/filesystem.git", - "reference": "71cc7693940bdad4dac4b038acd46b4f1ae7d2ca" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/filesystem/zipball/71cc7693940bdad4dac4b038acd46b4f1ae7d2ca", - "reference": "71cc7693940bdad4dac4b038acd46b4f1ae7d2ca", - "shasum": "" - }, - "require": { - "php": "^7.1.3", - "symfony/polyfill-ctype": "~1.8" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.1-dev" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Component\\Filesystem\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony Filesystem Component", - "homepage": "https://symfony.com", - "time": "2018-11-11T19:51:29+00:00" - }, - { - "name": "symfony/psr-http-message-bridge", - "version": "v1.2.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/psr-http-message-bridge.git", - "reference": "9ab9d71f97d5c7d35a121a7fb69f74fee95cd0ad" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/psr-http-message-bridge/zipball/9ab9d71f97d5c7d35a121a7fb69f74fee95cd0ad", - "reference": "9ab9d71f97d5c7d35a121a7fb69f74fee95cd0ad", - "shasum": "" - }, - "require": { - "php": "^7.1", - "psr/http-message": "^1.0", - "symfony/http-foundation": "^3.4 || ^4.0" - }, - "require-dev": { - "nyholm/psr7": "^1.1", - "symfony/phpunit-bridge": "^3.4.20 || ^4.0", - "zendframework/zend-diactoros": "^1.4.1 || ^2.0" - }, - "suggest": { - "nyholm/psr7": "For a super lightweight PSR-7/17 implementation" - }, - "type": "symfony-bridge", - "extra": { - "branch-alias": { - "dev-master": "1.2-dev" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Bridge\\PsrHttpMessage\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Symfony Community", - "homepage": "http://symfony.com/contributors" - }, - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - } - ], - "description": "PSR HTTP message bridge", - "homepage": "http://symfony.com", - "keywords": [ - "http", - "http-message", - "psr-17", - "psr-7" - ], - "time": "2019-03-11T18:22:33+00:00" - }, - { - "name": "theseer/tokenizer", - "version": "1.1.0", - "source": { - "type": "git", - "url": "https://github.com/theseer/tokenizer.git", - "reference": "cb2f008f3f05af2893a87208fe6a6c4985483f8b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/theseer/tokenizer/zipball/cb2f008f3f05af2893a87208fe6a6c4985483f8b", - "reference": "cb2f008f3f05af2893a87208fe6a6c4985483f8b", - "shasum": "" - }, - "require": { - "ext-dom": "*", - "ext-tokenizer": "*", - "ext-xmlwriter": "*", - "php": "^7.0" - }, - "type": "library", - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Arne Blankerts", - "email": "arne@blankerts.de", - "role": "Developer" - } - ], - "description": "A small library for converting tokenized PHP source code into XML and potentially other formats", - "time": "2017-04-07T12:08:54+00:00" - }, - { - "name": "webmozart/assert", - "version": "1.3.0", - "source": { - "type": "git", - "url": "https://github.com/webmozart/assert.git", - "reference": "0df1908962e7a3071564e857d86874dad1ef204a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/webmozart/assert/zipball/0df1908962e7a3071564e857d86874dad1ef204a", - "reference": "0df1908962e7a3071564e857d86874dad1ef204a", - "shasum": "" - }, - "require": { - "php": "^5.3.3 || ^7.0" - }, - "require-dev": { - "phpunit/phpunit": "^4.6", - "sebastian/version": "^1.0.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.3-dev" - } - }, - "autoload": { - "psr-4": { - "Webmozart\\Assert\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Bernhard Schussek", - "email": "bschussek@gmail.com" - } - ], - "description": "Assertions to validate method input/output with nice error messages.", - "keywords": [ - "assert", - "check", - "validate" - ], - "time": "2018-01-29T19:49:41+00:00" - } - ], - "aliases": [], - "minimum-stability": "stable", - "stability-flags": { - "deligram/bioscope": 20, - "swayok/alternative-laravel-cache": 20, - "tymon/jwt-auth": 20, - "laracasts/generators": 20 - }, - "prefer-stable": false, - "prefer-lowest": false, - "platform": { - "php": ">= 7.1.3", - "ext-json": "*" - }, - "platform-dev": [] -} diff --git a/helpers/qarray.php b/helpers/qarray.php index 1dc2c20..f80617c 100644 --- a/helpers/qarray.php +++ b/helpers/qarray.php @@ -1,7 +1,7 @@ collect($data); } -} \ No newline at end of file +} diff --git a/phpstan.neon.dist b/phpstan.neon.dist new file mode 100644 index 0000000..f89dd16 --- /dev/null +++ b/phpstan.neon.dist @@ -0,0 +1,9 @@ +parameters: + level: max + paths: + - src + excludePaths: + analyse: + - src/Testing + + reportUnmatchedIgnoredErrors: true \ No newline at end of file diff --git a/phpunit.xml.dist b/phpunit.xml.dist index 209a0b9..f7ff69e 100644 --- a/phpunit.xml.dist +++ b/phpunit.xml.dist @@ -1,28 +1,16 @@ - + cacheDirectory=".phpunit.cache"> + + + ./src + + - - ./tests + + ./tests - - - ./src - - \ No newline at end of file diff --git a/src/ArrayQuery.php b/src/ArrayQuery.php deleted file mode 100644 index 56f1084..0000000 --- a/src/ArrayQuery.php +++ /dev/null @@ -1,42 +0,0 @@ -collect($data); - } else { - parent::__construct($data); - } - } - - public static function getInstance() - { - if (is_null(static::$instance)) { - static::$instance = new static(); - } - - return static::$instance; - } - - public function readPath($file) - { - return '{}'; - } - - public function parseData($data) - { - - return $this->collect([]); - } -} \ No newline at end of file diff --git a/src/Clause.php b/src/Clause.php index 4cef437..c42f801 100644 --- a/src/Clause.php +++ b/src/Clause.php @@ -1,78 +1,52 @@ */ - protected $_select = []; - - /** - * @var int - */ - protected $_offset = 0; - - /** - * @var null - */ - protected $_take = null; - + protected array $_select = []; /** * contains column names for except - * @var array + * @var array */ - protected $_except = []; - - /** - * Stores base contents. - * - * @var array - */ - protected $_original = []; + protected array $_except = []; /** * Stores all conditions. * - * @var array - */ - protected $_conditions = []; - - /** - * @var bool + * @var array */ - protected $_isProcessed = false; + protected array $_conditions = []; /** * @var string */ - protected $_traveler = '.'; + protected string $_traveler = '.'; + + + protected AstParser $parser; /** * map all conditions with methods - * @var array + * @var array */ - protected static $_conditionsMap = [ + protected static array $_conditionsMap = [ '=' => 'equal', 'eq' => 'equal', '==' => 'strictEqual', @@ -106,121 +80,25 @@ class Clause 'instance' => 'instance', 'type' => 'type', 'any' => 'any', + 'bool' => 'isBool', ]; - /** - * @param array $props - * @return $this - */ - public function fresh($props = []) - { - $properties = [ - '_data' => [], - '_original' => [], - '_select' => [], - '_isProcessed' => false, - '_node' => '', - '_except' => [], - '_conditions' => [], - '_take' => null, - '_offset' => 0, - '_traveler' => '.', - ]; - - foreach ($properties as $property=>$value) { - if (isset($props[$property])) { - $value = $props[$property]; - } - - $this->$property = $value; - } - - return $this; - } - - - /** - * import parsed data from raw json - * - * @param array|object $data - * @return self - */ - public function collect($data) - { - $this->reProcess(); - $this->fresh(); - - $this->_data = deep_copy($data); - $this->_original = deep_copy($data); - - return $this; - } - /** - * Prepare data from desire conditions - * - * @return $this + * @param array $props + * @return static */ - protected function prepare() - { - if ($this->_isProcessed) { - return $this; - } - - if (count($this->_conditions) > 0) { - $calculatedData = $this->processQuery(); - if (!is_null($this->_take)) { - $calculatedData = array_slice($calculatedData, $this->_offset, $this->_take); - } - $this->_data = $calculatedData; - - $this->_isProcessed = true; - return $this; - } - - $this->_isProcessed = true; - if (!is_null($this->_take)) { - $this->_data = array_slice($this->_data, $this->_offset, $this->_take); - } - - $this->_data = $this->getData(); - - return $this; - } - - /** - * Our system will cache processed data and prevend multiple time processing. If - * you want to reprocess this method can help you - * - * @return $this - */ - public function reProcess() - { - $this->_isProcessed = false; - return $this; - } /** * Parse object to array * * @param object $obj - * @return array|mixed + * @return array */ - protected function objectToArray($obj) + protected function objectToArray(object $obj): array { - if (!is_array($obj) && !is_object($obj)) { - return $obj; - } - - if (is_array($obj)) { - return $obj; - } - - if (is_object($obj)) { - $obj = get_object_vars($obj); - } + $obj = get_object_vars($obj); return array_map([$this, 'objectToArray'], $obj); } @@ -231,12 +109,8 @@ protected function objectToArray($obj) * @param array $arr * @return bool */ - protected function isMultiArray($arr) + protected function isMultiArray(array $arr): bool { - if (!is_array($arr)) { - return false; - } - rsort($arr); return isset($arr[0]) && is_array($arr[0]); @@ -246,29 +120,25 @@ protected function isMultiArray($arr) /** * Check the given array is a collection * - * @param $array + * @param array $data * @return bool */ - protected function isCollection($array) + protected function isCollection(array $data): bool { - if (!is_array($array)) return false; - - return array_keys($array) === range(0, count($array) - 1); + $firstKey = array_key_first($data); + return $data !== [] && ((array_is_list($data) && is_array($data[0])) || (is_int($firstKey) && is_array($data[$firstKey]))); } /** * Set node path, where QArray start to prepare * - * @param null $node - * @return $this - * @throws InvalidNodeException + * @param string $node + * @return static */ - public function from($node = null) + public function from(string $node = '.'): static { - $this->_isProcessed = false; - - if (is_null($node) || $node == '') { - throw new InvalidNodeException(); + if ($node == '') { + $node = '.'; } $this->_node = $node; @@ -279,78 +149,80 @@ public function from($node = null) /** * Taking desire columns from result * - * @param $array - * @return array + * @param array $columns + * @return array */ - public function takeColumn($array) + public function takeColumn(array $columns): array { - return $this->selectColumn($this->exceptColumn($array)); + return $this->selectColumn($this->exceptColumn($columns)); } /** * selecting specific column * - * @param $array - * @return array + * @param array $data + * @return array */ - protected function selectColumn($array) + protected function selectColumn(array $data): array { $keys = $this->_select; if (count($keys) == 0) { - return $array; + return $data; } $select = array_keys($keys); - $columns = array_intersect_key($array, array_flip((array) $select)); - $row = []; - foreach ($columns as $column => $val) { - $fn = null; - if (array_key_exists($column, $keys)) { - $fn = $keys[$column]; + + foreach ($keys as $column => $fn) { + if (AstParser::isValidFunctionCall($fn)) { + $data[$column] = $this->parser->execute($fn, $data); + } elseif (is_string($fn)) { + $data[$column] = Utilities::arrayGet($data, $fn); } - if (is_callable($fn)) { - $val = call_user_func_array($fn, [$val, $array]); + if (is_int($fn) && is_string($column)) { + $data[str_replace(Utilities::$_traveler, '_', $column)] = Utilities::arrayGet($data, $column); } - $row[$column] = $val; } - return $row; + $cols = array_flip($select); + + $columns = []; + + foreach ($cols as $key => $value) { + $columns[str_replace(Utilities::$_traveler, '_', $key)] = $value; + } + + return array_intersect_key($data, $columns); } /** * selecting specific column * - * @param $array - * @return array + * @param array $columns + * @return array */ - protected function exceptColumn($array) + protected function exceptColumn( array $columns): array { $keys = $this->_except; - if (count($keys) == 0) { - return $array; + return $columns; } - return array_diff_key($array, array_flip((array) $keys)); + return array_diff_key($columns, array_flip($keys)); } /** * select desired column * - * @param array $columns - * @return $this + * @param string $columns + * @return static */ - public function select($columns = []) + public function select(mixed $columns = null): static { - if (!is_array($columns)) { - $columns = func_get_args(); - } - - $this->setSelect($columns); + $this->setSelectColumns($columns); return $this; } @@ -358,10 +230,14 @@ public function select($columns = []) /** * setter for select columns * - * @param array $columns + * @param array $columns */ - protected function setSelect($columns = []) + protected function setSelectColumns(?array $columns = null): void { + if (!$columns || !is_array($columns)) { + return; + } + if (count($columns) <= 0 ) { return; } @@ -377,45 +253,15 @@ protected function setSelect($columns = []) } } - /** - * Set offset value for slice of array - * - * @param $offset - * @return $this - */ - public function offset($offset) - { - $this->_offset = $offset; - - return $this; - } - - /** - * Set taken value for slice of array - * - * @param $take - * @return $this - */ - public function take($take) - { - $this->_take = $take; - - return $this; - } - /** * select desired column for except * * @param array $columns - * @return $this + * @return static */ - public function except($columns = []) + public function except(string ...$columns): static { - if (!is_array($columns)) { - $columns = func_get_args(); - } - if (count($columns) > 0 ){ $this->_except = $columns; } @@ -424,58 +270,25 @@ public function except($columns = []) } - /** - * Prepare data for result - * - * @param mixed $data - * @param bool $newInstance - * @return array|mixed - */ - protected function makeResult($data, $newInstance = false) - { - if (!$newInstance || is_null($data) || is_scalar($data) || !is_array($data)) { - $this->_data = $data; - return $this; - } - - /* - foreach ($data as $key => $val) { - $output[$key] = $this->generateResultData($val); - }*/ - - - return $this->instanceWithValue($data, ['_select' => $this->_select, '_except' => $this->_except]); - } - - /** - * Create/Copy new instance with given value - * - * @param $value - * @param array $meta - * @return mixed - */ - protected function instanceWithValue($value, $meta = []) - { - $instance = new static(); - $instance = $instance->collect($value); - $instance->fresh($meta); - - return $instance; - } /** * Set traveler delimiter * - * @param $delimiter - * @return $this + * @param string $delimiter + * @return static */ - public function setTraveler($delimiter) + public function setTraveler(string $delimiter): static { $this->_traveler = $delimiter; + Utilities::$_traveler = $delimiter; return $this; } + public function getTraveler(): string + { + return $this->_traveler; + } /** * Get data from nested array * @@ -484,26 +297,24 @@ public function setTraveler($delimiter) * @param mixed $default * @return mixed */ - protected function arrayGet($data, $node, $default = null) + protected function arrayGet(array $data, string $node, mixed $default = null): mixed { - if (empty($node) || $node == $this->_traveler) { + if ($node === '' || $node === $this->_traveler) { return $data; } - if (!$node) return new KeyNotExists(); - if (isset($data[$node])) { return $data[$node]; } - if (strpos($node, $this->_traveler) === false) { + if (!str_contains($node, $this->_traveler)) { return $default; } $items = $data; foreach (explode($this->_traveler, $node) as $segment) { - if (!is_array($items) || !isset($items[$segment])) { + if (!isset($items[$segment])) { return $default; } @@ -512,53 +323,16 @@ protected function arrayGet($data, $node, $default = null) return $items; } - /** - * get data from node path - * - * @return mixed - */ - protected function getData() - { - return $this->arrayGet($this->_data, $this->_node); - } - - /** - * Process the given queries - * - * @return array - * @throws ConditionNotAllowedException - */ - protected function processQuery() - { - $_data = $this->getData(); - $conditions = $this->_conditions; - - /*return array_filter($data, function ($data) use ($conditions) { - return $this->applyConditions($conditions, $data); - });*/ - - $result = []; - if (!is_array($_data)) return null; - - foreach ($_data as $key => $data) { - $keep = $this->applyConditions($conditions, $data); - if ($keep) { - $result[$key] = $this->takeColumn($data); - } - } - - return $result; - } /** * All the given conditions applied here * - * @param $conditions - * @param $data + * @param array $conditions + * @param array $data * @return bool * @throws ConditionNotAllowedException */ - protected function applyConditions($conditions, $data) + protected function applyConditions(array $conditions, array $data): bool { $decision = false; foreach ($conditions as $cond) { @@ -567,33 +341,40 @@ protected function applyConditions($conditions, $data) $decision |= $orDecision; } - return $decision; + return (bool) $decision; } /** * Apply every conditions for each row * - * @param $rules - * @param $data - * @param $orDecision - * @return bool|mixed + * @param array $rules + * @param array $data + * @param bool $orDecision + * @return bool * @throws ConditionNotAllowedException */ - protected function processEachCondition($rules, $data, &$orDecision) + protected function processEachCondition(array $rules, array $data, bool &$orDecision): bool { - if (!is_array($rules)) return false; - $andDecision = true; foreach ($rules as $rule) { $params = []; $function = null; - $value = $this->arrayGet($data, $rule['key']); + if (AstParser::isValidFunctionCall($rule['key'])) { + $valueFrom = $this->parser->execute($rule['key'], $data); + } else { + $valueFrom = $this->arrayGet($data, $rule['key']); + } if (!is_callable($rule['condition'])) { + $valueTo = $rule['value']; + if (AstParser::isValidFunctionCall($rule['value'])) { + $valueTo = $this->parser->execute($rule['value'], $data); + } + $function = $this->makeConditionalFunctionFromOperator($rule['condition']); - $params = [$value, $rule['value']]; + $params = [$valueFrom, $valueTo]; } if (is_callable($rule['condition'])) { @@ -601,38 +382,38 @@ protected function processEachCondition($rules, $data, &$orDecision) $params = [$data]; } - if ($value instanceof KeyNotExists) { + if ($valueFrom instanceof KeyNotExists) { $andDecision = false; } $andDecision = call_user_func_array($function, $params); - /* - if (! $value instanceof KeyNotExists) { - $andDecision = call_user_func_array($function, $params); - }*/ + /* + if (! $value instanceof KeyNotExists) { + $andDecision = call_user_func_array($function, $params); + }*/ //$andDecision = $value instanceof KeyNotExists ? false : call_user_func_array($function, [$value, $rule['value']]); $orDecision &= $andDecision; } - return $orDecision; + return (bool) $orDecision; } /** * Build or generate a function for applies condition from operator - * @param $condition + * @param string $condition * @return array * @throws ConditionNotAllowedException */ - protected function makeConditionalFunctionFromOperator($condition) + protected function makeConditionalFunctionFromOperator(string $condition): array { - if (!isset(self::$_conditionsMap[$condition])) { + if (!isset(static::$_conditionsMap[$condition])) { throw new ConditionNotAllowedException("Exception: {$condition} condition not allowed"); } - $function = self::$_conditionsMap[$condition]; + $function = static::$_conditionsMap[$condition]; if (!is_callable($function)) { if (!method_exists(ConditionFactory::class, $function)) { throw new ConditionNotAllowedException("Exception: {$condition} condition not allowed"); @@ -647,12 +428,12 @@ protected function makeConditionalFunctionFromOperator($condition) /** * make WHERE clause * - * @param string $key + * @param string|callable $key * @param string $condition * @param mixed $value - * @return $this + * @return static */ - public function where($key, $condition = null, $value = null) + public function where(string|callable $key, mixed $condition = null, mixed $value = null): static { if (!is_null($condition) && is_null($value)) { $value = $condition; @@ -660,7 +441,7 @@ public function where($key, $condition = null, $value = null) } if (count($this->_conditions) < 1) { - array_push($this->_conditions, []); + $this->_conditions[] = []; } if (is_callable($key)) { @@ -675,19 +456,19 @@ public function where($key, $condition = null, $value = null) /** * make WHERE clause with OR * - * @param string $key + * @param string|callable $key * @param string $condition * @param mixed $value - * @return $this + * @return static */ - public function orWhere($key = null, $condition = null, $value = null) + public function orWhere(string|callable $key, mixed $condition = null, mixed $value = null): static { if (!is_null($condition) && is_null($value)) { $value = $condition; $condition = '='; } - array_push($this->_conditions, []); + $this->_conditions[] = []; if (is_callable($key)) { $key($this); @@ -702,29 +483,31 @@ public function orWhere($key = null, $condition = null, $value = null) * make a callable where condition for custom logic implementation * * @param callable $fn - * @return $this + * @return static */ - public function callableWhere(callable $fn) + public function callableWhere(callable $fn): static { if (count($this->_conditions) < 1) { - array_push($this->_conditions, []); + $this->_conditions[] = []; } - return $this->makeWhere(null, $fn, null); + return $this->makeWhere('', $fn, null); } /** * make a callable orwhere condition for custom logic implementation * * @param callable $fn - * @return $this\ + * @return static */ - public function orCallableWhere(callable $fn) + public function orCallableWhere(callable $fn): static + { - array_push($this->_conditions, []); + $this->_conditions[] = []; $fn($this); - return $this; - //return $this->makeWhere(null, $fn, null); + + //return $this; + return $this->makeWhere('', $fn, null); } /** @@ -733,21 +516,20 @@ public function orCallableWhere(callable $fn) * @param string $key * @param string $condition * @param mixed $value - * @return $this + * @return static */ - protected function makeWhere($key, $condition = null, $value = null) + protected function makeWhere(string $key, mixed $condition = null, mixed $value = null): static { $current = end($this->_conditions); $index = key($this->_conditions); - array_push($current, [ + $current[] = [ 'key' => $key, 'condition' => $condition, 'value' => $value - ]); + ]; $this->_conditions[$index] = $current; - $this->_isProcessed = false; return $this; } @@ -757,9 +539,9 @@ protected function makeWhere($key, $condition = null, $value = null) * * @param string $key * @param array $value - * @return $this + * @return static */ - public function whereIn($key = null, $value = []) + public function whereIn(string $key, array $value = []): static { $this->where($key, 'in', $value); @@ -769,14 +551,14 @@ public function whereIn($key = null, $value = []) /** * make WHERE DATA TYPE clause * - * @param null $key - * @param $value - * @return $this + * @param string $key + * @param mixed $value + * @return static */ - public function whereDataType($key, $value) + public function whereDataType(string $key, mixed $value): static { $this->where($key, 'type', $value); - + return $this; } @@ -785,37 +567,40 @@ public function whereDataType($key, $value) * * @param string $key * @param mixed $value - * @return $this + * @return static */ - public function whereNotIn($key = null, $value = []) + public function whereNotIn(string $key, array $value = []): static { $this->where($key, 'notin', $value); + return $this; } /** * check the given value are contains in the given array key * - * @param $key - * @param $value - * @return $this + * @param string $key + * @param mixed $value + * @return static */ - public function whereInArray($key, $value) + public function whereInArray(string $key, mixed $value): static { $this->where($key, 'inarray', $value); + return $this; } /** * make a callable wherenot condition for custom logic implementation * - * @param $key - * @param $value - * @return $this + * @param string $key + * @param mixed $value + * @return static */ - public function whereNotInArray($key, $value) + public function whereNotInArray(string $key, mixed $value): static { $this->where($key, 'notinarray', $value); + return $this; } @@ -823,11 +608,12 @@ public function whereNotInArray($key, $value) * make WHERE NULL clause * * @param string $key - * @return $this + * @return static */ - public function whereNull($key = null) + public function whereNull(string $key): static { $this->where($key, 'null', 'null'); + return $this; } @@ -836,14 +622,12 @@ public function whereNull($key = null) * make WHERE Boolean clause * * @param string $key - * @param mixed $value - * @return $this + * @return static */ - public function whereBool($key, $value) + public function whereBool(string $key): static { - if (is_bool($value)) { - $this->where($key, '==', $value); - } + $this->where($key, 'bool'); + return $this; } @@ -851,9 +635,9 @@ public function whereBool($key, $value) * make WHERE NOT NULL clause * * @param string $key - * @return $this + * @return static */ - public function whereNotNull($key) + public function whereNotNull(string $key): static { $this->where($key, 'notnull', 'null'); @@ -863,10 +647,10 @@ public function whereNotNull($key) /** * Check the given key is exists in row * - * @param $key - * @return $this + * @param string $key + * @return static */ - public function whereExists($key) + public function whereExists(string $key): static { $this->where($key, 'exists', 'null'); @@ -876,10 +660,10 @@ public function whereExists($key) /** * Check the given key is not exists in row * - * @param $key - * @return $this + * @param string $key + * @return static */ - public function whereNotExists($key) + public function whereNotExists(string $key): static { $this->where($key, 'notexists', 'null'); @@ -890,10 +674,10 @@ public function whereNotExists($key) * make WHERE START WITH clause * * @param string $key - * @param string $value - * @return $this + * @param mixed $value + * @return static */ - public function whereStartsWith($key, $value) + public function whereStartsWith(string $key, mixed $value): static { $this->where($key, 'startswith', $value); @@ -904,10 +688,10 @@ public function whereStartsWith($key, $value) * make WHERE ENDS WITH clause * * @param string $key - * @param string $value - * @return $this + * @param mixed $value + * @return static */ - public function whereEndsWith($key, $value) + public function whereEndsWith(string $key, mixed $value): static { $this->where($key, 'endswith', $value); @@ -919,9 +703,9 @@ public function whereEndsWith($key, $value) * * @param string $key * @param string $value - * @return $this + * @return static */ - public function whereMatch($key, $value) + public function whereMatch(string $key, mixed $value): static { $this->where($key, 'match', $value); @@ -932,10 +716,10 @@ public function whereMatch($key, $value) * make WHERE CONTAINS clause * * @param string $key - * @param string $value - * @return $this + * @param mixed $value + * @return static */ - public function whereContains($key, $value) + public function whereContains(string $key, mixed $value): static { $this->where($key, 'contains', $value); @@ -946,10 +730,10 @@ public function whereContains($key, $value) * make WHERE LIKE clause * * @param string $key - * @param string $value - * @return $this + * @param mixed $value + * @return static */ - public function whereLike($key, $value) + public function whereLike(string $key, mixed $value): static { $this->where($key, 'contains', strtolower($value)); @@ -961,13 +745,13 @@ public function whereLike($key, $value) * * @param string $key * @param string $condition - * @param string $value - * @return $this + * @param mixed $value + * @return static */ - public function whereDate($key, $condition, $value = null) + public function whereDate(string $key, string $condition, mixed $value = null): static { return $this->callableWhere(function($row) use($key, $condition, $value) { - $haystack = isset($row[$key]) ? $row[$key] : null; + $haystack = $row[$key] ?? null; $haystack = date('Y-m-d', strtotime($haystack)); $function = $this->makeConditionalFunctionFromOperator($condition); @@ -981,9 +765,9 @@ public function whereDate($key, $condition, $value = null) * * @param string $key * @param object|string $object - * @return $this + * @return static */ - public function whereInstance($key, $object) + public function whereInstance(string $key, object|string $object): static { $this->where($key, 'instance', $object); @@ -994,10 +778,10 @@ public function whereInstance($key, $object) * make WHERE any clause * * @param string $key - * @param mixed - * @return $this + * @param mixed $value + * @return static */ - public function whereAny($key, $value) + public function whereAny(string $key, mixed $value): static { $this->where($key, 'any', $value); @@ -1007,11 +791,11 @@ public function whereAny($key, $value) * make WHERE any clause * * @param string $key - * @param mixed - * @param mixed - * @return $this + * @param mixed $condition + * @param mixed $value + * @return static */ - public function whereCount($key, $condition, $value = null) + public function whereCount(string $key, mixed $condition, mixed $value = null): static { return $this->where($key, function($columnValue, $row) use ($value, $condition) { $count = 0; @@ -1032,10 +816,10 @@ public function whereCount($key, $condition, $value = null) * @param callable $fn * @return bool */ - public static function macro($name, callable $fn) + public static function macro(string $name, callable $fn): bool { - if (!array_key_exists($name, self::$_conditionsMap)) { - self::$_conditionsMap[$name] = $fn; + if (!array_key_exists($name, static::$_conditionsMap)) { + static::$_conditionsMap[$name] = $fn; return true; } diff --git a/src/ConditionFactory.php b/src/ConditionFactory.php index 65ce8dd..86793a3 100644 --- a/src/ConditionFactory.php +++ b/src/ConditionFactory.php @@ -1,8 +1,8 @@ $comparable; } @@ -79,7 +79,7 @@ public static function greaterThan($value, $comparable) * * @return bool */ - public static function lessThan($value, $comparable) + public static function lessThan(mixed $value, mixed $comparable): bool { return $value < $comparable; } @@ -92,7 +92,7 @@ public static function lessThan($value, $comparable) * * @return bool */ - public static function greaterThanOrEqual($value, $comparable) + public static function greaterThanOrEqual(mixed $value, mixed $comparable): bool { return $value >= $comparable; } @@ -105,7 +105,7 @@ public static function greaterThanOrEqual($value, $comparable) * * @return bool */ - public static function lessThanOrEqual($value, $comparable) + public static function lessThanOrEqual(mixed $value, mixed $comparable): bool { return $value <= $comparable; } @@ -118,7 +118,7 @@ public static function lessThanOrEqual($value, $comparable) * * @return bool */ - public static function in($value, $comparable) + public static function in(mixed $value, mixed $comparable): bool { return (is_array($comparable) && in_array($value, $comparable)); } @@ -131,19 +131,19 @@ public static function in($value, $comparable) * * @return bool */ - public static function notIn($value, $comparable) + public static function notIn(mixed $value, mixed $comparable): bool { return (is_array($comparable) && !in_array($value, $comparable)); } - public static function inArray($value, $comparable) + public static function inArray(mixed $value, mixed $comparable): bool { if (!is_array($value)) return false; return in_array($comparable, $value); } - public static function inNotArray($value, $comparable) + public static function inNotArray(mixed $value, mixed $comparable): bool { return !static::inArray($value, $comparable); } @@ -155,7 +155,7 @@ public static function inNotArray($value, $comparable) * * @return bool */ - public static function isNull($value, $comparable) + public static function isNull(mixed $value, mixed $comparable): bool { return is_null($value); } @@ -167,21 +167,26 @@ public static function isNull($value, $comparable) * * @return bool */ - public static function isNotNull($value, $comparable) + public static function isNotNull(mixed $value, mixed $comparable): bool { return !$value instanceof KeyNotExists && !is_null($value); } - public static function notExists($value, $comparable) + public static function notExists(mixed $value, mixed $comparable): bool { return $value instanceof KeyNotExists; } - public static function exists($value, $comparable) + public static function exists(mixed $value, mixed $comparable): bool { return !static::notExists($value, $comparable); } + public static function isBool(mixed $value, mixed $comparable): bool + { + return is_bool($comparable); + } + /** * Start With * @@ -190,7 +195,7 @@ public static function exists($value, $comparable) * * @return bool */ - public static function startWith($value, $comparable) + public static function startWith(mixed $value, mixed $comparable): bool { if (is_array($comparable) || is_array($value) || is_object($comparable) || is_object($value)) { return false; @@ -211,7 +216,7 @@ public static function startWith($value, $comparable) * * @return bool */ - public static function endWith($value, $comparable) + public static function endWith(mixed $value, mixed $comparable): bool { if (is_array($comparable) || is_array($value) || is_object($comparable) || is_object($value)) { return false; @@ -232,7 +237,7 @@ public static function endWith($value, $comparable) * * @return bool */ - public static function match($value, $comparable) + public static function match(mixed $value, mixed $comparable): bool { if (is_array($comparable) || is_array($value) || is_object($comparable) || is_object($value)) { return false; @@ -255,9 +260,9 @@ public static function match($value, $comparable) * * @return bool */ - public static function contains($value, $comparable) + public static function contains(mixed $value, mixed $comparable): bool { - return (strpos($value, $comparable) !== false); + return str_contains($value, $comparable); } /** @@ -268,7 +273,7 @@ public static function contains($value, $comparable) * * @return bool */ - public static function dateEqual($value, $comparable, $format = 'Y-m-d') + public static function dateEqual(mixed $value, mixed $comparable, string $format = 'Y-m-d'): bool { $date = date($format, strtotime($value)); return $date == $comparable; @@ -283,7 +288,7 @@ public static function dateEqual($value, $comparable, $format = 'Y-m-d') * * @return bool */ - public static function instance($value, $comparable) + public static function instance(mixed $value, mixed $comparable): bool { return $value instanceof $comparable; } @@ -296,7 +301,7 @@ public static function instance($value, $comparable) * * @return bool */ - public static function type($value, $comparable) + public static function type(mixed $value, mixed $comparable): bool { return gettype($value) === $comparable; } @@ -309,7 +314,7 @@ public static function type($value, $comparable) * * @return bool */ - public static function any($value, $comparable) + public static function any(mixed $value, mixed $comparable): bool { if (is_array($value)) { return in_array($comparable, $value); @@ -326,7 +331,7 @@ public static function any($value, $comparable) * * @return bool */ - public static function execFunction($value, $comparable) + public static function execFunction(mixed $value, mixed $comparable): bool { if (is_array($value)) { return in_array($comparable, $value); diff --git a/src/Exceptions/InvalidArgumentException.php b/src/Exceptions/InvalidArgumentException.php new file mode 100644 index 0000000..92a78a4 --- /dev/null +++ b/src/Exceptions/InvalidArgumentException.php @@ -0,0 +1,11 @@ + $data + */ + public function __construct(NodeVisitor $visitor) + { + $this->visitor = $visitor; + } + + /** + * @param string $expression + * @param array $data + * @return mixed + */ + public function execute(string $expression, array $data): mixed + { + $this->visitor->setData($data); + + $codeWithPhp = "createForVersion(PhpVersion::fromString('8.0')); + $ast = $parser->parse($codeWithPhp); + + $traverser = new NodeTraverser(); + + $traverser->addVisitor($this->visitor); + $traverser->traverse($ast); + + return $this->visitor->getOutput(); + } catch (\Exception $e) { + return $expression; + } + + } + + public static function isValidFunctionCall(mixed $input): bool + { + if (!is_string($input)) { + return false; + } + // Regular expression to match PHP function call syntax + $pattern = '/^[a-zA-Z_][a-zA-Z0-9_]*\s*\((.*)\)$/'; + + // Check if the string matches the pattern + return preg_match($pattern, $input) === 1; + } + +} diff --git a/src/Parsers/NodeVisitor.php b/src/Parsers/NodeVisitor.php new file mode 100644 index 0000000..1ac0eb1 --- /dev/null +++ b/src/Parsers/NodeVisitor.php @@ -0,0 +1,157 @@ + + */ + protected array $data = []; + + protected mixed $output = null; + + protected string $func; + + public function __construct(string $func) + { + $this->func = $func; + } + + /** + * @param array $nodes + */ + public function beforeTraverse(array $nodes) + { +// dump($nodes); + foreach ($nodes as $node) { + if ($node->expr instanceof Node\Expr\FuncCall) { + $this->output = $this->executeFunction($node->expr); + + return null; + } + } + + return null; + } + + private function executeFunction(Node\Expr\FuncCall $node) + { + /** + * @var Node\Name $name + */ + $functionName = $node->name->toString(); + $args = []; + + /** + * @var Node\Arg $arg + */ + foreach ($node->args as $arg) { + $args[] = $this->resolveArgument($arg->value); + } + + // Dynamically call the method + if (method_exists($this->func, $functionName)) { + if ($functionName === 'column') { + $args[] = $this->data; + } + + $result = call_user_func_array([$this->func, $functionName], $args); + return $result; + } else { + throw new \Exception("Method $functionName does not exist in MyClass"); + } + } + + private function resolveArgument(Node $value): mixed + { + if ($value instanceof Node\Scalar\String_) { + return $value->value; + } elseif($value instanceof Node\Scalar\Int_) { + return (int) $value->value; + } elseif($value instanceof Node\Scalar\Float_) { + return (float)$value->value; + } elseif ($value instanceof Node\Expr\BinaryOp) { + return $this->evaluateExpression($value); + } elseif ($value instanceof Node\Expr\ConstFetch) { + if (array_key_exists($value->name->toString(), $this->getData())) { + return $this->data[$value->name->toString()]; + } else { + throw new \Exception("Constant " . $value->name->toString() . " is not defined"); + } + } elseif ($value instanceof Node\Expr\FuncCall) { + // Recursively resolve nested function calls + return $this->executeFunction($value); + } else { + throw new \Exception("Unsupported argument type: " . get_class($value)); + } + } + + private function evaluateExpression(Node\Expr\BinaryOp $node): int|float + { + $left = $this->resolveBinaryOpValue($node->left); + $right = $this->resolveBinaryOpValue($node->right); + + switch (get_class($node)) { + case Node\Expr\BinaryOp\Plus::class: + return $left + $right; + case Node\Expr\BinaryOp\Minus::class: + return $left - $right; + case Node\Expr\BinaryOp\Mul::class: + return $left * $right; + case Node\Expr\BinaryOp\Div::class: + return $left / $right; + case Node\Expr\BinaryOp\Mod::class: + return $left % $right; + case Node\Expr\BinaryOp\Pow::class: + return $left ** $right; + default: + throw new \Exception("Unsupported operation: " . get_class($node)); + } + } + + private function resolveBinaryOpValue(Node $node): int|float + { + if ($node instanceof Node\Scalar\LNumber) { + return $node->value; + } elseif ($node instanceof Node\Scalar\DNumber) { + return $node->value; + } elseif ($node instanceof Node\Expr\ConstFetch) { + if (array_key_exists($node->name->toString(), $this->getData())) { + return $this->data[$node->name->toString()]; + } else { + throw new \Exception("Constant " . $node->name->toString() . " is not defined"); + } + } elseif ($node instanceof Node\Expr\BinaryOp) { + return $this->evaluateExpression($node); + } else { + throw new \Exception("Unsupported node type: " . get_class($node)); + } + } + + /** + * @return array + */ + public function getData(): array + { + return $this->data; + } + + /** + * @param array $data + */ + public function setData(array $data): void + { + $this->data = $data; + } + + public function getOutput(): mixed + { + return $this->output; + } +} diff --git a/src/Query.php b/src/Query.php new file mode 100644 index 0000000..67d9c4e --- /dev/null +++ b/src/Query.php @@ -0,0 +1,66 @@ +|null $data + * @return static + */ + public static function new(?array $data = null): static + { + if (is_null(static::$instance)) { + static::$instance = new static(); + } + + if (!is_null($data)) { + static::$instance->collect($data); + } + + return static::$instance; + } + + public function readPath(string $path): array + { + return []; + } + + public function parseData(mixed $data): array + { + return []; + } + + public function useUrl(string $url): QueryEngine + { + $contents = file_get_contents($url); + + return $this->useJson($contents); + } + + public function useJson(string $json): QueryEngine + { + $data = json_decode($json, true); + + if (json_last_error() !== JSON_ERROR_NONE) { + throw new InvalidJsonException(); + } + + return $this->collect($data); + } + + public function useArray(array $data): QueryEngine + { + return $this->collect($data); + } + +} diff --git a/src/QueryEngine.php b/src/QueryEngine.php index 6540d83..b2f2cdd 100644 --- a/src/QueryEngine.php +++ b/src/QueryEngine.php @@ -1,29 +1,92 @@ + */ + protected array $_data; + + /** + * Stores base contents. * - * @param ?string $data + * @var array + */ + protected array $_original = []; + + /** + * @var bool */ - public function __construct(?string $data = null) + protected bool $_isProcessed = false; + + /** + * @var int + */ + protected int $_offset = 0; + + /** + * @var ?int + */ + protected ?int $_take = null; + + + protected readonly Options $options; + + /** + * @param Options|null $options + */ + public function __construct(?Options $options = null) { - if ((is_file($data) && file_exists($data)) || filter_var($data, FILTER_VALIDATE_URL)) { - $this->collect($this->readPath($data)); + if (is_null($options)) { + $options = new Options(); + } - } else { - $this->collect($this->parseData($data)); + $this->options = $options; + + $this->setTraveler($this->options->traveler); + + $func = Func::class; + if (!is_null($this->options->func) && class_exists($this->options->func)) { + $func = $this->options->func; } + + $this->parser = new AstParser(new NodeVisitor($func)); + } + + /** + * @param string $path + * @return array + */ + public abstract function readPath(string $path): array; + + /** + * @param string|array $data + * @return array + */ + public abstract function parseData(string|array $data): array; /** * return json string when echoing the instance * @@ -35,17 +98,6 @@ public function __toString(): string return $this->toJson(); } - /** - * @param string $path - * @return array - */ - public abstract function readPath(string $path); - - /** - * @param string $data - * @return array - */ - public abstract function parseData(string $data); /** * @param mixed $key @@ -64,19 +116,16 @@ public function __get(mixed $key): mixed /** * Property override for current object * - * @param mixed $key - * @param mixed $val + * @param TKey $key + * @param TValue $val */ public function __set(mixed $key, mixed $val): void { - if (is_array($this->_data)) { - $this->_data[$key] = $val; - } + $this->_data[$key] = $val; } /** - * @return array - * @throws ConditionNotAllowedException + * @return array */ public function __invoke(): array { @@ -86,7 +135,7 @@ public function __invoke(): array /** * Implementation of ArrayAccess : check existence of the target offset * - * @param mixed $offset + * @param TKey $offset * @return bool */ public function offsetExists(mixed $offset): bool @@ -97,7 +146,7 @@ public function offsetExists(mixed $offset): bool /** * Implementation of ArrayAccess : Get the target offset * - * @param mixed $offset + * @param TKey $offset * @return mixed|KeyNotExists */ public function offsetGet(mixed $offset): mixed @@ -112,8 +161,8 @@ public function offsetGet(mixed $offset): mixed /** * Implementation of ArrayAccess : Set the target offset * - * @param mixed $offset - * @param mixed $value + * @param TKey $offset + * @param TValue $value */ public function offsetSet(mixed $offset, mixed $value): void { @@ -123,7 +172,7 @@ public function offsetSet(mixed $offset, mixed $value): void /** * Implementation of ArrayAccess : Unset the target offset * - * @param mixed $offset + * @param TKey $offset */ public function offsetUnset(mixed $offset): void { @@ -161,9 +210,9 @@ public function current(): mixed /** * Implementation of Iterator : Return the key of the current element * - * @return mixed + * @return string|int|null */ - public function key(): mixed + public function key(): string|int|null { return key($this->_data); } @@ -171,7 +220,7 @@ public function key(): mixed /** * Implementation of Iterator : Move forward to next element * - * @return |void + * @return void */ public function next(): void { @@ -192,121 +241,284 @@ public function valid(): bool * Deep copy current instance * * @param bool $fresh - * @return QueryEngine + * @return static */ - public function copy($fresh = false) + public function copy(bool $fresh = false): static { if ($fresh) { - $this->fresh([ - '_data' => $this->_data, - '_original' => $this->_original, - '_traveler' => $this->_traveler, - ]); + return $this->reset(data:[], instance: true); } return deep_copy($this); } /** - * Alias of from() method + * Prepare data from desire conditions * - * @param null $node - * @return $this - * @throws InvalidNodeException + * @return static */ - public function at($node = null) + protected function run(): static { - return $this->from($node); + if ($this->_isProcessed) { + return $this; + } + + $calculatedData = $this->processQuery(); + if (!is_null($this->_take)) { + $calculatedData = array_slice($calculatedData, $this->_offset, $this->_take); + } + + $this->_data = $calculatedData; + + $this->_isProcessed = true; + return $this; + } + /** - * getting prepared data + * Process the given queries * - * @param array $column - * @return QueryEngine + * @return array|null * @throws ConditionNotAllowedException */ - public function get($column = []) + protected function processQuery(): ?array { - if (!is_array($column)) { - $column = func_get_args(); + $_data = $this->getData(); + $conditions = $this->_conditions; + + $hasConditions = count($conditions) > 0; + $hasCollection = $this->isCollection($_data); + + if ($hasConditions && !$hasCollection) { + throw new ConditionNotAllowedException('Conditions not allowed without collection'); + } + + /*return array_filter($data, function ($data) use ($conditions) { + return $this->applyConditions($conditions, $data); + });*/ + + $result = []; + if (!is_array($_data)) return null; + + if ($hasCollection && $hasConditions) { + foreach ($_data as $key => $data) { + $keep = $this->applyConditions($conditions, $data); + if ($keep) { + $result[$key] = $this->takeColumn($data); + } + } + + return $result; } - $this->setSelect($column); - $this->prepare(); - return $this->makeResult($this->_data); + if (!$hasConditions && $hasCollection) { + foreach ($_data as $key => $data) { + $result[$key] = $this->takeColumn($data); + } + + return $result; + } + + return $this->takeColumn($_data); } /** - * alias of get method + * Prepare data for result * - * @param array $column - * @return array|object - * @throws ConditionNotAllowedException + * @param mixed $data + * @param bool $instance + * @return static */ - public function fetch($column = []) + protected function processOutput(mixed $data, bool $instance = false): static { - if (!is_array($column)) { - $column = func_get_args(); + if (!$instance || !is_array($data)) { + $this->_data = $data; + return $this; } - return $this->get($column); + /* + foreach ($data as $key => $val) { + $output[$key] = $this->generateResultData($val); + }*/ + + return $this->reset($data, ['_select' => $this->_select, '_except' => $this->_except], true); } + /** - * check exists data from the query + * Reset the instance with new data * - * @return bool - * @throws ConditionNotAllowedException + * @param array $data + * @param array $props + * @param bool $instance + * @return static */ - public function exists() + public function reset(array $data = [], array $props = [], bool $instance = false): static { - $this->prepare(); + if ($data === []) { + $data = deep_copy($this->_original); + } + + if ($instance) { + $static = new static(); + $static->collect($data); + $static->resetProps($props); + + return $static; + } + + $this->resetProps($props); + $this->collect($data); - return (!empty($this->_data) && !is_null($this->_data)); + return $this; } + /** - * reset given data to the $_data + * reset all properties * - * @param mixed $data - * @param bool $fresh - * @return QueryEngine + * @param array $props */ - public function reset($data = null, $fresh = false) + public function resetProps(array $props = []): void { - if (is_null($data)) { - $data = deep_copy($this->_original); - } + $this->_select = $props['_select'] ?? []; + $this->_isProcessed = $props['_isProcessed'] ?? false; + $this->_node = $props['_node'] ?? ''; + $this->_except = $props['_except'] ?? []; + $this->_conditions = $props['_conditions'] ?? []; + $this->_take = $props['_take'] ?? null; + $this->_offset = $props['_offset'] ?? 0; + $this->setTraveler($this->options->traveler); + } - if ($fresh) { - $self = new static(); - $self->collect($data); + /** + * import parsed data from raw json + * + * @param array> $data + * @return static + */ + public function collect(array $data): static + { + $this->reProcess(); - return $self; - } + $this->_data = $data; + $this->_original = deep_copy($data); - $this->collect($data); + return $this; + } + + /** + * Our system will cache processed data and prevend multiple time processing. If + * you want to reprocess this method can help you + * + * @return static + */ + public function reProcess(): static + { + $this->_isProcessed = false; return $this; } + + /** + * get data from node path + * + * @return mixed + */ + protected function getData(): mixed + { + return $this->arrayGet($this->_data, $this->_node); + } + + /** + * Alias of from() method + * + * @param string $node + * @return static + */ + public function at(string $node = '.'): static + { + return $this->from($node); + } + + /** + * getting prepared data + * + * @param ?array $columns + * @return static + */ + public function get(?array $columns = null): static + { + $this->setSelectColumns($columns); + + $this->run(); + + return $this->processOutput($this->_data); + } + + /** + * getting prepared data + * + * @param ?array $columns + * @return mixed + */ + public function raw(?array $columns = null): mixed + { + $this->setSelectColumns($columns); + + $this->run(); + + return $this->getData(); + } + + /** + * alias of get method + * + * @param ?array $columns + * @return static + */ + public function fetch(?array $columns = null): static + { + return $this->get($columns); + } + + /** + * check exists data from the query + * + * @return bool + */ + public function exists(): bool + { + $this->run(); + + return (!empty($this->_data)); + } + /** * getting group data from specific column * * @param string $column - * @return $this - * @throws ConditionNotAllowedException + * @return static */ - public function groupBy($column) + public function groupBy(string $column): static { - $this->prepare(); + $this->run(); $data = []; - foreach ($this->_data as $map) { - $value = $this->arrayGet($map, $column); + foreach ($this->_data as $row) { + $value = $this->arrayGet($row, $column); if ($value) { - $data[$value][] = $map; + + $key = match (gettype($value)) { + 'object' => get_class($value), + 'boolean' => $value ? 'true' : 'false', + 'NULL' => 'null', + default => $value, + }; + + $data[$key][] = $row; } } @@ -317,13 +529,13 @@ public function groupBy($column) /** * Group by count from array value * - * @param $column - * @return $this + * @param string $column + * @return static */ - public function countGroupBy($column): self + public function countGroupBy(string $column): static { - $this->prepare(); + $this->run(); $data = []; foreach ($this->_data as $map) { @@ -340,6 +552,7 @@ public function countGroupBy($column): self } $this->_data = $data; + return $this; } @@ -348,12 +561,11 @@ public function countGroupBy($column): self * getting distinct data from specific column * * @param string $column - * @return $this - * @throws ConditionNotAllowedException + * @return static */ - public function distinct($column) + public function distinct(string $column): static { - $this->prepare(); + $this->run(); $data = []; foreach ($this->_data as $map) { @@ -364,6 +576,7 @@ public function distinct($column) } $this->_data = array_values($data); + return $this; } @@ -375,7 +588,7 @@ public function distinct($column) */ public function count(): int { - $this->prepare(); + $this->run(); return count($this->_data); } @@ -384,26 +597,45 @@ public function count(): int * size is an alias of count * * @return int - * @throws ConditionNotAllowedException */ public function size(): int { return $this->count(); } + /** + * @param array $data + * @param string|null $key + * @return array + * @throws InvalidArgumentException + * @throws KeyNotPresentException + */ + protected function validateDataCanProcessWithKey(array $data, ?string $key = null): array + { + if (!is_null($key) && !$this->isCollection($data)) { + throw new InvalidArgumentException(); + } + + if (is_null($key) && $this->isCollection($data)) { + throw new KeyNotPresentException(); + } + + return $data; + } + /** * sum prepared data - * @param int $column - * @return number - * @throws ConditionNotAllowedException + * @param string|null $column + * @return int|float */ - public function sum($column = null) + public function sum(?string $column = null): int|float { - $this->prepare(); - $data = $this->_data; + $this->run(); + $data = $this->validateDataCanProcessWithKey($this->_data, $column); + $sum = 0; - if (is_null($column)) { + if (is_null($column) && !$this->isCollection($data)) { $sum = array_sum($data); } else { foreach ($data as $key => $val) { @@ -421,15 +653,19 @@ public function sum($column = null) /** * getting max value from prepared data * - * @param int $column - * @return number - * @throws ConditionNotAllowedException + * @param string|null $column + * @return int|float */ - public function max($column = null) + public function max(?string $column = null): int|float { - $this->prepare(); - $data = $this->_data; - if (!is_null($column)) { + $this->run(); + $data = $this->validateDataCanProcessWithKey($this->_data, $column); + + if (is_null($column) && !$this->isCollection($data)) { + return max($data); + } + + if (!is_null($column) && $this->isCollection($data)) { $values = []; foreach ($data as $val) { $values[] = $this->arrayGet($val, $column); @@ -444,16 +680,19 @@ public function max($column = null) /** * getting min value from prepared data * - * @param int $column - * @return number - * @throws ConditionNotAllowedException + * @param string|null $column + * @return int|float */ - public function min($column = null) + public function min(?string $column = null): int|float { - $this->prepare(); - $data = $this->_data; + $this->run(); + $data = $this->validateDataCanProcessWithKey($this->_data, $column); - if (!is_null($column)) { + if (is_null($column) && !$this->isCollection($data)) { + return min($data); + } + + if (!is_null($column) && $this->isCollection($data)) { $values = []; foreach ($data as $val) { $values[] = $this->arrayGet($val, $column); @@ -468,13 +707,12 @@ public function min($column = null) /** * getting average value from prepared data * - * @param int $column - * @return number - * @throws ConditionNotAllowedException + * @param string|null $column + * @return int|float */ - public function avg($column = null) + public function avg(?string $column = null): int|float { - $this->prepare(); + $this->run(); $count = $this->count(); $total = $this->sum($column); @@ -485,23 +723,18 @@ public function avg($column = null) /** * getting first element of prepared data * - * @param array $column - * @return object|array|null - * @throws ConditionNotAllowedException + * @param ?array $columns + * @return static|null */ - public function first($column = []) + public function first(?array $columns = null): ?static { - $this->prepare(); + $this->setSelectColumns($columns); + $this->run(); $data = $this->_data; - $this->setSelect($column); - - if (!is_array($data)) return null; if (count($data) > 0) { - $data = $this->toArray(); - $this->_data = reset($data); - return $this; + return $this->processOutput(reset($data)); } return null; @@ -510,21 +743,18 @@ public function first($column = []) /** * getting last element of prepared data * - * @param array $column - * @return object|array|null - * @throws ConditionNotAllowedException + * @param array $columns + * @return QueryEngine|null */ - public function last($column = []) + public function last(?array $columns = null): ?static { - $this->prepare(); + $this->setSelectColumns($columns); + $this->run(); $data = $this->_data; - $this->setSelect($column); - - if (!is_array($data)) return null; if (count($data) > 0) { - return $this->makeResult(end($data)); + return $this->processOutput(end($data)); } return null; @@ -534,23 +764,21 @@ public function last($column = []) * getting nth number of element of prepared data * * @param int $index - * @param array $column - * @return object|array|null - * @throws ConditionNotAllowedException + * @param ?array $columns + * @return static|null */ - public function nth($index, $column = []) + public function nth(int $index, ?array $columns = null): ?static { - $this->prepare(); + $this->setSelectColumns($columns); + $this->run(); - $data = $this->_data; - $this->setSelect($column); + $data = $this->values(); - if (!is_array($data)) return null; - $total_elm = count($data); + $totalItems = count($data); $idx = abs($index); - if (!is_integer($index) || $total_elm < $idx || $index == 0 || !is_array($this->_data)) { + if ($totalItems < $idx || $index == 0) { return null; } @@ -560,7 +788,7 @@ public function nth($index, $column = []) $result = $data[$this->count() + $index]; } - return $this->makeResult($result); + return $this->processOutput($result); } /** @@ -568,16 +796,11 @@ public function nth($index, $column = []) * * @param string $column * @param string $order - * @return object|array|null - * @throws ConditionNotAllowedException + * @return QueryEngine */ - public function sortBy($column, $order = 'asc') + public function sortBy(string $column, string $order = 'asc'): static { - $this->prepare(); - - if (!is_array($this->_data)) { - return $this; - } + $this->run(); usort($this->_data, function ($a, $b) use ($column, $order) { $val1 = $this->arrayGet($a, $column); @@ -611,9 +834,9 @@ public function sortBy($column, $order = 'asc') * @param string $order * @return QueryEngine */ - public function sort($order = 'asc') + public function sort(string $order = 'asc'): static { - $this->_data = convert_to_array($this->_data); + $order = strtolower($order); if ($order == 'desc') { rsort($this->_data); @@ -621,7 +844,7 @@ public function sort($order = 'asc') sort($this->_data); } - return $this->makeResult($this->_data); + return $this->processOutput($this->_data); } @@ -629,14 +852,13 @@ public function sort($order = 'asc') * getting data from desire path * * @param string $path - * @param array $column * @return mixed - * @throws InvalidNodeException - * @throws ConditionNotAllowedException */ - public function find($path, $column = []) + public function grab(string $path): mixed { - return $this->from($path)->prepare()->get($column); + $this->_conditions = []; + + return $this->from($path)->raw(); } /** @@ -644,7 +866,7 @@ public function find($path, $column = []) * * @return mixed */ - public function result() + public function result(): mixed { return $this->_data; } @@ -655,12 +877,12 @@ public function result() * @param callable $fn * @throws ConditionNotAllowedException */ - public function each(callable $fn) + public function each(callable $fn): void { - $this->prepare(); + $this->run(); foreach ($this->_data as $key => $val) { - $fn($key, $val); + $fn($val, $key); } } @@ -668,57 +890,55 @@ public function each(callable $fn) * transform prepared data by using callable function * * @param callable $fn - * @return self + * @return static * @throws ConditionNotAllowedException */ - public function transform(callable $fn) + public function transform(callable $fn): static { - $this->prepare(); + $this->run(); $data = []; foreach ($this->_data as $key => $val) { $data[$key] = $fn($val); } - return $this->makeResult($data); + return $this->processOutput($data); } - - - /** + + + /** * map prepared data by using callable function for each entity * * @param callable $fn - * @return object|array - * @throws ConditionNotAllowedException + * @return QueryEngine */ - public function map(callable $fn) + public function map(callable $fn): static { - $this->prepare(); + $this->run(); $data = []; - + foreach ($this->_data as $key => $val) { $data[] = $fn($key, $val); } - - return $this->makeResult($data); + + return $this->processOutput($data, true); } /** * filtered each element of prepared data * * @param callable $fn - * @param bool $key - * @return mixed|array - * @throws ConditionNotAllowedException + * @param bool $keepIndexes + * @return static */ - public function filter(callable $fn, $key = false) + public function filter(callable $fn, bool $keepIndexes = false): static { - $this->prepare(); + $this->run(); $data = []; foreach ($this->_data as $k => $val) { if ($fn($val)) { - if ($key) { + if ($keepIndexes) { $data[$k] = $val; } else { $data[] = $val; @@ -726,7 +946,7 @@ public function filter(callable $fn, $key = false) } } - return $this->makeResult($data); + return $this->processOutput($data); } /** @@ -734,12 +954,12 @@ public function filter(callable $fn, $key = false) * * @param string $node * @return QueryEngine - * @throws InvalidNodeException - * @throws ConditionNotAllowedException */ - public function then($node) + public function then(string $node = '.'): static { - $this->prepare(); + $this->run(); + $this->_isProcessed = false; + $this->from($node); return $this; @@ -750,17 +970,17 @@ public function then($node) * * @param string|array $key * @param string $delimiter - * @return self - * @throws ConditionNotAllowedException + * @return static + * @throws ConditionNotAllowedException|\Exception */ - public function implode($key, $delimiter = ',') + public function implode(string|array $key, string $delimiter = ','): static { - $this->prepare(); + $this->run(); $implode = []; if (is_string($key)) { $implodedData[$key] = $this->makeImplode($key, $delimiter); - return $this->makeResult($implodedData); + return $this->processOutput($implodedData); } if (is_array($key)) { @@ -769,11 +989,11 @@ public function implode($key, $delimiter = ',') $implode[$k] = $imp; } - return $this->makeResult($implode); + return $this->processOutput($implode); } $implodedData[$key] = ''; - return $this->makeResult($implodedData); + return $this->processOutput($implodedData); } /** @@ -781,18 +1001,13 @@ public function implode($key, $delimiter = ',') * * @param string $key * @param string $delimiter - * @return string|null - * @throws \Exception + * @return string */ - protected function makeImplode($key, $delimiter = ',') + protected function makeImplode(string $key, string $delimiter = ','): string { $data = array_column($this->toArray(), $key); - if (is_array($data)) { - return implode($delimiter, $data); - } - - return ''; + return implode($delimiter, $data); } /** @@ -800,103 +1015,95 @@ protected function makeImplode($key, $delimiter = ',') * * @param string $column * @param string|null $index - * @return self - * @throws ConditionNotAllowedException + * @return static */ - public function column($column, $index = null) + public function column(string $column, ?string $index = null): static { - $this->prepare(); + $this->run(); $data = array_column($this->_data, $column, $index); - return $this->makeResult($data); + return $this->processOutput($data); } /** * getting raw JSON from prepared data * * @return string - * @throws ConditionNotAllowedException */ - public function toJson() + public function toJson(): string { - $this->prepare(); + $this->run(); return json_encode($this->toArray()); } /** * @return mixed - * @throws ConditionNotAllowedException */ - public function toArray() + public function toArray(): array { - $this->prepare(); + $this->run(); $maps = $this->_data; + return convert_to_array($maps); } /** * getting all keys from prepared data * - * @return object|array - * @throws ConditionNotAllowedException + * @return QueryEngine */ - public function keys() + public function keys(): static { - $this->prepare(); + $this->run(); - return $this->makeResult(array_keys($this->_data)); + return $this->processOutput(array_keys($this->_data)); } /** * getting all values from prepared data * - * @return object|array - * @throws ConditionNotAllowedException + * @return QueryEngine */ - public function values() + public function values(): static { - $this->prepare(); + $this->run(); - return $this->makeResult(array_values($this->_data)); + return $this->processOutput(array_values($this->_data)); } /** * getting chunk values from prepared data * * @param int $amount - * @param callable $fn - * @return object|array|bool - * @throws ConditionNotAllowedException + * @param callable|null $fn + * @return static */ - public function chunk($amount, callable $fn = null) + public function chunk(int $amount, ?callable $fn = null): ?static { - $this->prepare(); + $this->run(); - $chunk_value = array_chunk($this->_data, $amount); - $chunks = []; + $this->_data = array_chunk($this->_data, $amount); if (!is_null($fn) && is_callable($fn)) { - foreach ($chunk_value as $chunk) { - $return = $fn($chunk); - if (!is_null($return)) { - $chunks[] = $return; - } + foreach ($this as $chunk) { + $fn($chunk); } - return count($chunks) > 0 ? $chunks : null; + + return null; } - return $chunk_value; + return $this->processOutput($this->_data); } /** * Pluck is the alias of column * - * @param $column - * @param null $key - * @return array|mixed|QueryEngine + * @param string $column + * @param ?string $key + * @return static */ - public function pluck($column, $key = null) + public function pluck(string $column, ?string $key = null): static { return $this->column($column, $key); } @@ -904,39 +1111,39 @@ public function pluck($column, $key = null) /** * Array pop from current result set * - * @return array|mixed|QueryEngine + * @return static */ - public function pop() + public function pop(): static { - $this->prepare(); - + $this->run(); $data = array_pop($this->_data); - return $this->makeResult($data); + + return $this->processOutput($data, true); } /** * Array shift from current result set * - * @return array|mixed|QueryEngine + * @return static */ - public function shift() + public function shift(): static { - $this->prepare(); - + $this->run(); $data = array_shift($this->_data); - return $this->makeResult($data); + + return $this->processOutput($data, true); } /** * Push the given data in current result set * - * @param $data - * @param null $key - * @return $this + * @param mixed $data + * @param string|null $key + * @return static */ - public function push($data, $key = null) + public function push(mixed $data, ?string $key = null): static { - $this->prepare(); + $this->run(); if (is_null($key)) { $this->_data[] = $data; @@ -946,4 +1153,30 @@ public function push($data, $key = null) return $this; } + + /** + * Set taken value for slice of array + * + * @param int $take + * @return static + */ + public function take(int $take): static + { + $this->_take = $take; + + return $this; + } + + /** + * Set offset value for slice of array + * + * @param int $offset + * @return static + */ + public function offset(int $offset): static + { + $this->_offset = $offset; + + return $this; + } } diff --git a/src/Utilities.php b/src/Utilities.php new file mode 100644 index 0000000..b3ebe0a --- /dev/null +++ b/src/Utilities.php @@ -0,0 +1,46 @@ + $data + * @param string $node + * @param mixed $default + * @return mixed + */ + public static function arrayGet(array $data, string $node, mixed $default = null): mixed + { + if ($node === '' || $node === static::$_traveler) { + return $data; + } + + if (isset($data[$node])) { + return $data[$node]; + } + + if (!str_contains($node, static::$_traveler)) { + return $default; + } + + $items = $data; + + foreach (explode(static::$_traveler, $node) as $segment) { + if (!isset($items[$segment])) { + return $default; + } + + $items = &$items[$segment]; + } + + return $items; + } +} diff --git a/tests/AbstractTestCase.php b/tests/AbstractTestCase.php deleted file mode 100644 index f9f3f65..0000000 --- a/tests/AbstractTestCase.php +++ /dev/null @@ -1,21 +0,0 @@ -setAccessible(true); - - return $method; - } -} diff --git a/tests/ClauseTest.php b/tests/ClauseTest.php new file mode 100644 index 0000000..b92c978 --- /dev/null +++ b/tests/ClauseTest.php @@ -0,0 +1,75 @@ +assertEquals($result, Condition::equal($value, $comparable)); - } - - /** - * @param mixed $value - * @param mixed $comparable - * @param bool $result - * - * @dataProvider strictEqualProvider - */ - public function testStrictEqual($value, $comparable, $result) - { - $this->assertEquals($result, Condition::strictEqual($value, $comparable)); - } - - /** - * @param mixed $value - * @param mixed $comparable - * @param bool $result - * - * @dataProvider notEqualProvider - */ - public function testNotEqual($value, $comparable, $result) - { - $this->assertEquals($result, Condition::notEqual($value, $comparable)); - } - - /** - * @param mixed $value - * @param mixed $comparable - * @param bool $result - * - * @dataProvider strictNotEqualProvider - */ - public function testStrictNotEqual($value, $comparable, $result) - { - $this->assertEquals($result, Condition::strictNotEqual($value, $comparable)); - } - - /** - * @param mixed $value - * @param mixed $comparable - * @param bool $result - * - * @dataProvider greaterThanProvider - */ - public function testGreaterThan($value, $comparable, $result) - { - $this->assertEquals($result, Condition::greaterThan($value, $comparable)); - } - - /** - * @param mixed $value - * @param mixed $comparable - * @param bool $result - * - * @dataProvider lessThanProvider - */ - public function testLessThan($value, $comparable, $result) - { - $this->assertEquals($result, Condition::lessThan($value, $comparable)); - } - - /** - * @param mixed $value - * @param mixed $comparable - * @param bool $result - * - * @dataProvider greaterThanOrEqualProvider - */ - public function testGreaterThanOrEqual($value, $comparable, $result) - { - $this->assertEquals($result, Condition::greaterThanOrEqual($value, $comparable)); - } - - /** - * @param mixed $value - * @param mixed $comparable - * @param bool $result - * - * @dataProvider lessThanOrEqualProvider - */ - public function testLessThanOrEqual($value, $comparable, $result) - { - $this->assertEquals($result, Condition::lessThanOrEqual($value, $comparable)); - } - - /** - * @param mixed $value - * @param array $comparable - * @param bool $result - * - * @dataProvider inProvider - */ - public function testIn($value, $comparable, $result) - { - $this->assertEquals($result, Condition::in($value, $comparable)); - } - - /** - * @param mixed $value - * @param array $comparable - * @param bool $result - * - * @dataProvider notInProvider - */ - public function testNotIn($value, $comparable, $result) - { - $this->assertEquals($result, Condition::notIn($value, $comparable)); - } - - /** - * @param mixed $value - * @param bool $result - * - * @dataProvider isNullProvider - */ - public function testIsNull($value, $result) - { - $this->assertEquals($result, Condition::isNull($value)); - } - - /** - * @param mixed $value - * @param bool $result - * - * @dataProvider isNotNullProvider - */ - public function testIsNotNull($value, $result) - { - $this->assertEquals($result, Condition::isNotNull($value)); - } - - /** - * @param mixed $value - * @param string $comparable - * @param bool $result - * - * @dataProvider startWithProvider - */ - public function testStartWith($value, $comparable, $result) - { - $this->assertEquals($result, Condition::startWith($value, $comparable)); - } - - /** - * @param mixed $value - * @param string $comparable - * @param bool $result - * - * @dataProvider endWithProvider - */ - public function testEndWith($value, $comparable, $result) - { - $this->assertEquals($result, Condition::endWith($value, $comparable)); - } - - /** - * @param mixed $value - * @param string $comparable - * @param bool $result - * - * @dataProvider matchProvider - */ - public function testMatch($value, $comparable, $result) - { - $this->assertEquals($result, Condition::match($value, $comparable)); - } - - /** - * @param mixed $value - * @param string $comparable - * @param bool $result - * - * @dataProvider containsProvider - */ - public function testContains($value, $comparable, $result) - { - $this->assertEquals($result, Condition::contains($value, $comparable)); - } - - public function containsProvider() - { - return [ - ['test', 'a', false], - ['test', 'te', true], - ['test', 'st', true], - ['test', 'es', true], - ['test', 'test', true], - ]; - } - - public function matchProvider() - { - return [ - [[], 1, false], - [2, new \stdClass(), false], - ['test', 'te', false], - ['test', 'st', false], - ['test', 'es', false], - ['test', 'test', true], - ['test', 'hh', false], - ['test', null, false], - ]; - } - - public function endWithProvider() - { - return [ - [[], 1, false], - [2, new \stdClass(), false], - ['test', 'te', false], - ['test', 'st', true], - ['test', null, true], - ]; - } - - public function startWithProvider() - { - return [ - [[], 1, false], - [2, new \stdClass(), false], - ['test', 'te', true], - ['test', 'es', false], - ['test', null, true], - ]; - } - - public function isNotNullProvider() - { - return [ - [1, true], - [[1, 2, 3], true], - ['test', true], - [0, true], - [null, false], - ]; - } - - public function isNullProvider() - { - return [ - [1, false], - [[1, 2, 3], false], - ['test', false], - [0, false], - [null, true], - ]; - } - - public function inProvider() - { - return [ - [1, [], false], - [1, [1, 2, 3], true], - [1, 1, false], - [1, true, false], - [1, [2, 3], false], - [1, [2,3, [1]], false], - [1, ['key1' => 1, 'key2' => 2], true] - ]; - } - - public function notInProvider() - { - return [ - [1, [], true], - [1, [1, 2, 3], false], - [1, 1, false], - [1, true, false], - [1, [2, 3], true], - [1, [2,3, [1]], true], - [1, ['key1' => 1, 'key2' => 2], false] - ]; - } - - public function greaterThanProvider() - { - return [ - [0, 1, false], - [0,'1', false], - [2, 2, false], - [-1, 2, false], - [-2, -3, true], - [1, 0, true], - [1.2, 1.1, true] - ]; - } - - public function lessThanProvider() - { - return [ - [0, 1, true], - [0,'1', true], - [2, 2, false], - [-1, 2, true], - [-2, -3, false], - [1, 0, false], - [1.2, 1.1, false] - ]; - } - - public function greaterThanOrEqualProvider() - { - return [ - [0, 1, false], - [0,'1', false], - [2, 2, true], - [-1, 2, false], - [-2, -3, true], - [1, 0, true], - [1.2, 1.1, true] - ]; - } - - public function lessThanOrEqualProvider() - { - return [ - [0, 1, true], - [0,'1', true], - [2, 2, true], - [-1, 2, true], - [-2, -3, false], - [1, 0, false], - [1.2, 1.1, false] - ]; - } - - public function strictEqualProvider() - { - return [ - [0, 1, false], - ['0', 0, false], - ['text', 'text2', false], - ['text', 'text', true], - [0, 0, true], - [true, false, false], - [true, true, true], - [true, 'true', false] - ]; - } - - public function equalProvider() - { - return [ - [0, 1, false], - ['0', 0, true], - ['text', 'text2', false], - ['text', 'text', true], - [0, 0, true], - [true, false, false], - [true, true, true] - ]; - } - - public function strictNotEqualProvider() - { - return [ - [0, 1, true], - ['0', 0, true], - ['text', 'text2', true], - ['text', 'text', false], - [0, 0, false], - [true, false, true], - [true, true, false], - [true, 'true', true] - ]; - } - - public function notEqualProvider() - { - return [ - [0, 1, true], - ['0', 0, false], - ['text', 'text2', true], - ['text', 'text', false], - [0, 0, false], - [true, false, true], - [true, true, false] - ]; - } -} diff --git a/tests/Facades/Jsonq.php b/tests/Facades/Jsonq.php deleted file mode 100644 index d9fad64..0000000 --- a/tests/Facades/Jsonq.php +++ /dev/null @@ -1,44 +0,0 @@ - [ - 'level2.1' => [ - 'level3.1' => 'data31', - 'level3.2' => 32, - 'level3.3' => true, - ], - 'level2.2' => [ - 'level3.4' => 'data34', - 'level3.5' => 35, - 'level3.6' => false, - ], - 'level2.3' => [ - 'level3.7' => 'data37', - 'level3.8' => 38, - 'level3.9' => true, - ] - ], - 'level1.2' => [ - 'level2.4' => [ - 'level3.10' => 'data310', - 'level3.11' => 311, - 'level3.12' => true, - ], - 'level2.5' => [ - 'level3.13' => 'data313', - 'level3.14' => 314, - 'level3.15' => false, - ], - 'level2.6' => [ - 'level3.16' => 'data316', - 'level3.17' => 317, - 'level3.18' => true, - ] - ] - ]; - - protected function createFile() - { - file_put_contents(self::FILE_NAME, json_encode(self::$testData)); - $this->file = self::FILE_NAME; - } - - protected function createInvalidFile() - { - file_put_contents(self::FILE_INVALID_NAME, 'invalid_data'); - $this->fileInvalid = self::FILE_INVALID_NAME; - } - - protected function removeFiles() - { - unlink(self::FILE_NAME); - unlink(self::FILE_INVALID_NAME); - $this->file = null; - $this->fileInvalid = null; - } - - /** - * @return \StdClass - */ - private function getTestObject() - { - $object = new \stdClass(); - $object->testField = 'test'; - $object->test_field2 = 'test2'; - $object->testfield3 = 'test3'; - - return $object; - } - - protected function setUp() - { - $this->createFile(); - $this->createInvalidFile(); - $this->jsonq = new Query(self::FILE_NAME); - } - - protected function tearDown() - { - $this->removeFiles(); - } - - /** - * @param mixed $file - * @param bool $result - * - * @dataProvider importProvider - */ - public function testImport($file, $result) - { - if ($result) { - $this->assertEquals(true, $this->jsonq->import($file)); - } else { - $this->expectException(FileNotFoundException::class); - $this->jsonq->import($file); - } - } - - /** - * @param mixed $input - * @param mixed $result - * - * @dataProvider objectToArrayProvider - */ - public function testObjectToArray($input, $result) - { - $method = $this->makeCallable($this->jsonq, 'objectToArray'); - - $this->assertEquals($result, $method->invokeArgs($this->jsonq, [$input])); - } - - /** - * @param mixed $input - * @param bool $result - * - * @dataProvider isMultiArrayProvider - */ - public function testIsMultiArray($input, $result) - { - $method = $this->makeCallable($this->jsonq, 'isMultiArray'); - - $this->assertEquals($result, $method->invokeArgs($this->jsonq, [$input])); - } - - /** - * @param mixed $input - * @param bool $isReturnMap - * @param mixed $result - * - * @dataProvider isJsonProvider - */ - public function testIsJson($input, $isReturnMap, $result = null) - { - $this->assertEquals($result, $this->jsonq->isJson($input, $isReturnMap)); - } - - /** - * @param mixed $input - * @param bool $isObject - * @param array $result - * - * @dataProvider prepareResultProvider - */ - public function testPrepareResult($input, $isObject, $result) - { - $method = $this->makeCallable($this->jsonq, 'prepareResult'); - $this->assertEquals($result, $method->invokeArgs($this->jsonq, [$input, $isObject])); - } - - /** - * @param mixed $file - * @param array $result - * - * @dataProvider getDataFromFileProvider - */ - public function testGetDataFromFile($file, $result) - { - $method = $this->makeCallable($this->jsonq, 'getDataFromFile'); - - if (is_string($result)) { - $this->expectException($result); - $method->invokeArgs($this->jsonq, [$file]); - } else { - $this->assertEquals($result, $method->invokeArgs($this->jsonq, [$file])); - } - } - - public function getDataFromFileProvider() - { - return [ - [self::FILE_NAME, self::$testData], - [null, FileNotFoundException::class], - [true, FileNotFoundException::class], - [1, FileNotFoundException::class], - ['invalid_path.json', FileNotFoundException::class], - [self::FILE_INVALID_NAME, InvalidJsonException::class] - ]; - } - - public function prepareResultProvider() - { - $obj = new \stdClass(); - $obj->key1 = 'test'; - $obj->key2 = 'test2'; - - return [ - [['test', ['test2', 'test3']], false, ['test', ['test2', 'test3']]], - [['key1' => 'test','key2' => 'test2'], false, $obj], - [['test', 'test2'], true, ['test', 'test2']], - [['key1' => 'test','key2' => 'test2'], true, ['key1' => 'test','key2' => 'test2']], - ['["test", "test2"]', false, '["test", "test2"]'], - ['["test", "test2"]', true, '["test", "test2"]'] - ]; - } - - public function isJsonProvider() - { - return [ - [null, false, false], - [true, false, true], - [1, false, true], - [new \StdClass(), false, false], - [['test'], false, false], - ['invalid_json_string', false, false], - [json_encode('valid_json_string'), false, true], - [json_encode('valid_json_string'), true, 'valid_json_string'] - ]; - } - - public function isMultiArrayProvider() - { - return [ - [null, false], - [true, false], - [1, false], - ['test', false], - [['test', 'test'], false], - [['test',['test']], true], - [[['test'], 'test'], true] - ]; - } - - public function importProvider() - { - return [ - [self::FILE_NAME, true], - [null, false], - [true, false], - [1, false], - ['invalid_path.json', false] - ]; - } - - public function objectToArrayProvider() - { - return [ - [null, null], - [true, true], - [1, 1], - ['test', 'test'], - [['data1', 'data2'],['data1', 'data2']], - [$this->getTestObject(), ['testField' => 'test', 'test_field2' => 'test2', 'testfield3' => 'test3']] - ]; - } -} diff --git a/tests/JsonqServiceProviderTest.php b/tests/JsonqServiceProviderTest.php deleted file mode 100644 index 23916a8..0000000 --- a/tests/JsonqServiceProviderTest.php +++ /dev/null @@ -1,19 +0,0 @@ -assertIsInjectable(Query::class); - } -} diff --git a/tests/Pest.php b/tests/Pest.php new file mode 100644 index 0000000..4289b56 --- /dev/null +++ b/tests/Pest.php @@ -0,0 +1,9 @@ +collect($data); +} + +/** + * @template TKey + * @template TValue + * @return QueryEngine + */ +function get_query_engine_instance(): QueryEngine +{ + return new class extends QueryEngine { + public function readPath(string $path): array { return []; } + public function parseData(string|array $data): array { return []; } + }; + +} + +it('can create a deep copy of the QueryEngine instance', function () { + $queryEngine = get_query_engine_instance_with_data(); + + $queryEngine->__set('key', 'value'); + $copy = $queryEngine->copy(); + + expect($copy)->not->toBe($queryEngine) + ->and($copy->__get('key'))->toBe('value') + ->and($copy)->toEqual($queryEngine); +}); + +it('can make string representation of the QueryEngine instance', function () { + $queryEngine = get_query_engine_instance(); + $queryEngine->__set('key', 'value'); + + $string = (string) $queryEngine; + + expect($string)->toBeString() + ->and($string)->toContain('key'); +}); + +it('can __set and __get the data of the QueryEngine instance', function () { + $queryEngine = get_query_engine_instance(); + $queryEngine->__set('key', 'value'); + + expect($queryEngine->__get('key'))->toBe('value'); +}); + +it('can __invoke the QueryEngine instance', function () { + $queryEngine = get_query_engine_instance(); + $queryEngine->__set('key', 'value'); + + expect($queryEngine())->toBeArray() + ->and($queryEngine())->toMatchArray(['key' => 'value']); +}); + +it('at() can get the value of the given key', function () { + $queryEngine = get_query_engine_instance(); + $queryEngine->collect(['foo' => [ + 'bar' => 'baz' + ]]); + + expect($queryEngine->at('foo')->toArray())->toMatchArray(['bar' => 'baz']); +}); + +it('at() can get the value from the nested node', function () { + $queryEngine = get_query_engine_instance(); + $queryEngine->collect(['foo' => [ + 'bar' => [ + 'baz' => 'qux' + ] + ]]); + + expect($queryEngine->at('foo.bar', 'default')->toArray())->toMatchArray(['baz' => 'qux']); +}); + +it('can get() the value of the query result', function () { + $queryEngine = get_query_engine_instance(); + $queryEngine->collect([ + ['id' => 1, 'name' => 'foo'], + ['id' => 2, 'name' => 'bar'], + ['id' => 3, 'name' => 'baz'], + ]); + + expect($queryEngine->get()->toArray())->toMatchArray([ + ['id' => 1, 'name' => 'foo'], + ['id' => 2, 'name' => 'bar'], + ['id' => 3, 'name' => 'baz'], + ]) + ->and($queryEngine->get())->toBeInstanceOf(QueryEngine::class) + ->and($queryEngine->get())->toHaveProperty('_data'); +}); + +it('can get() the value of the query result with the given properties', function () { + $queryEngine = get_query_engine_instance(); + $queryEngine->collect([ + ['id' => 1, 'name' => 'foo'], + ['id' => 2, 'name' => 'bar'], + ['id' => 3, 'name' => 'baz'], + ]); + + expect($queryEngine->get(['id'])->toArray())->toMatchArray([ + ['id' => 1], + ['id' => 2], + ['id' => 3], + ]); +}); + +it('can raw() get the raw data from the query', function () { + $queryEngine = get_query_engine_instance(); + $queryEngine->collect([ + ['id' => 1], + ['id' => 2], + ['id' => 3], + ]); + + expect($queryEngine->raw())->toBeArray("It should return the raw data") + ->and($queryEngine->raw())->toMatchArray([ + ['id' => 1], + ['id' => 2], + ['id' => 3], + ], "It should be the same as the original data"); +}); + + +it('can raw() get the raw data from the query with the given column', function () { + $queryEngine = get_query_engine_instance(); + $queryEngine->collect([ + ['id' => 1, 'name' => 'foo'], + ['id' => 2, 'name' => 'bar'], + ['id' => 3, 'name' => 'baz'], + ]); + + expect($queryEngine->raw(['id']))->toBeArray("It should return the raw data") + ->and($queryEngine->raw())->toMatchArray([ + ['id' => 1], + ['id' => 2], + ['id' => 3], + ], "It should be the same as the original data"); +}); + +it('can exists() check the data existence', function () { + $queryEngine = get_query_engine_instance(); + $queryEngine->collect([ + ['id' => 1, 'name' => 'foo'], + ['id' => 2, 'name' => 'bar'], + ['id' => 3, 'name' => 'baz'], + ]); + + expect($queryEngine->where('id', 2)->exists())->toBeTrue("It should return true") + ->and($queryEngine->reProcess()->where('id', 4)->exists())->toBeFalse("It should return false"); + +}); + +describe("reset()", function() { + + it('can reset current instance with original data', function () { + $queryEngine = get_query_engine_instance(); + $queryEngine->collect([ + ['id' => 1, 'name' => 'foo'], + ['id' => 2, 'name' => 'bar'], + ['id' => 3, 'name' => 'baz'], + ]); + + $newQuery = $queryEngine->where('id', 2)->get(); + + $queryEngine->reset(); + + expect($newQuery->raw())->toMatchArray([ + ['id' => 1, 'name' => 'foo'], + ['id' => 2, 'name' => 'bar'], + ['id' => 3, 'name' => 'baz'], + ]); + }); + + it('can reset current instance with new data', function () { + $queryEngine = get_query_engine_instance(); + $queryEngine->collect([ + ['id' => 1, 'name' => 'foo'], + ['id' => 2, 'name' => 'bar'], + ['id' => 3, 'name' => 'baz'], + ]); + + $newQuery = $queryEngine->where('id', 2)->get(); + + $queryEngine->reset([ + ['id' => 4, 'name' => 'qux'], + ['id' => 5, 'name' => 'quux'], + ]); + + expect($newQuery->raw())->toMatchArray([ + ['id' => 4, 'name' => 'qux'], + ['id' => 5, 'name' => 'quux'], + ]); + }); + + it('can reset current instance with new instance', function () { + $queryEngine = get_query_engine_instance(); + $queryEngine->collect([ + ['id' => 1, 'name' => 'foo'], + ['id' => 2, 'name' => 'bar'], + ['id' => 3, 'name' => 'baz'], + ]); + + $newQuery = $queryEngine->where('id', 2)->get(); + + $newInstance = $queryEngine->reset(instance: true); + + expect($newQuery)->not->toBe($newInstance) + ->and($newInstance->raw())->toMatchArray([ + ['id' => 1, 'name' => 'foo'], + ['id' => 2, 'name' => 'bar'], + ['id' => 3, 'name' => 'baz'], + ]); + }); + + it('can reset current instance with modifying props', function () { + $queryEngine = get_query_engine_instance(); + $queryEngine->collect([ + ['id' => 1, 'name' => 'foo'], + ['id' => 2, 'name' => 'bar'], + ['id' => 3, 'name' => 'baz'], + ]); + + $newQuery = $queryEngine->where('id', 2)->get(); + + $queryEngine->reset(props: ['_take' => 2]); + + expect($queryEngine->get()->raw())->toHaveCount(2); + }); + + it('can reset current instance with modifying props and new instance', function () { + $queryEngine = get_query_engine_instance(); + $queryEngine->collect([ + ['id' => 1, 'name' => 'foo'], + ['id' => 2, 'name' => 'bar'], + ['id' => 3, 'name' => 'baz'], + ['id' => 4, 'name' => 'baz'], + ['id' => 5, 'name' => 'baz'], + ]); + + $newQuery = $queryEngine->where('id', 2)->get(); + + $newInstance = $queryEngine->reset(props: ['_take' => 4], instance: true); + + expect($newInstance->get()->raw())->toHaveCount(4); + }); + + +}); + +it('can groupBy the data with specific property', function () { + $queryEngine = get_query_engine_instance(); + $mockData = get_mock_data(); + + $queryEngine->collect($mockData); + + $result = $queryEngine->groupBy('deleted_at'); + expect($result->raw())->toHaveKey('2023-01-01 00:00:00') + ->and($result->raw()['2023-01-01 00:00:00'])->toHaveCount(2); + +}); + +it('can countGroupBy the data with specific property', function () { + $queryEngine = get_query_engine_instance(); + $mockData = get_mock_data(); + + $queryEngine->collect($mockData); + + $result = $queryEngine->countGroupBy('deleted_at'); + expect($result->raw())->toHaveKey('2023-01-01 00:00:00') + ->and($result->raw()['2023-01-01 00:00:00'])->toBe(2); + +}); + +it('can distinct the data with specific property', function () { + $queryEngine = get_query_engine_instance(); + $mockData = get_mock_data(); + + $queryEngine->collect($mockData); + + $result = $queryEngine->distinct('deleted_at'); + expect($result->raw())->toHaveCount(5) + ->and($result->raw()[0])->toHaveKey('deleted_at', '2023-01-01 00:00:00'); + +}); + +describe('count()', function () { + it('can count the data', function () { + $queryEngine = get_query_engine_instance(); + $mockData = get_mock_data(); + + $queryEngine->collect($mockData); + + $result = $queryEngine->count(); + expect($result)->toBe(20); + }); + + it('can count the data with query results', function () { + $queryEngine = get_query_engine_instance(); + $mockData = get_mock_data(); + + $queryEngine->collect($mockData); + + $result = $queryEngine->where('is_active', false)->count(); + expect($result)->toBe(5); + }); +}); + +describe('sum()', function () { + it('can sum the collection data', function () { + $queryEngine = get_query_engine_instance(); + $mockData = get_mock_data(); + + $queryEngine->collect($mockData); + + $result = $queryEngine->sum('age'); + expect($result)->toBe(560); + }); + + it('can sum the collection data of querying resutls', function () { + $queryEngine = get_query_engine_instance(); + $mockData = get_mock_data(); + + $queryEngine->collect($mockData); + + $result = $queryEngine->where('age', '>', 30)->sum('age'); + expect($result)->toBe(238); + }); + + it('can sum the sets of value', function () { + $queryEngine = get_query_engine_instance(); + $mockData = get_mock_data(); + + $queryEngine->collect([7, 3, 6, 2, 5, 1, 4]); + + $result = $queryEngine->sum(); + expect($result)->toBe(28); + }); + + + it('can not sum non collection value with given key', function () { + $queryEngine = get_query_engine_instance(); + + $queryEngine->collect([7, 3, 6, 2, 5, 1, 4]); + + $queryEngine->sum('age'); + })->throws(\Nahid\QArray\Exceptions\InvalidArgumentException::class); + + + it('can not sum collection of value without any given key', function () { + $queryEngine = get_query_engine_instance(); + $mockData = get_mock_data(); + + $queryEngine->collect($mockData); + + $queryEngine->sum(); + })->throws(\Nahid\QArray\Exceptions\KeyNotPresentException::class); +}); + +describe('max()', function () { + it('can max() the collection data', function () { + $queryEngine = get_query_engine_instance(); + $mockData = get_mock_data(); + + $queryEngine->collect($mockData); + + $result = $queryEngine->max('age'); + expect($result)->toBe(37); + }); + + it('can max() the collection data of querying results', function () { + $queryEngine = get_query_engine_instance(); + $mockData = get_mock_data(); + + $queryEngine->collect($mockData); + + $result = $queryEngine->where('age', '<', 30)->max('age'); + expect($result)->toBe(29); + }); + + it('can max() the sets of value', function () { + $queryEngine = get_query_engine_instance(); + $mockData = get_mock_data(); + + $queryEngine->collect([7, 3, 6, 2, 5, 9, 4]); + + $result = $queryEngine->max(); + expect($result)->toBe(9); + }); + + it('can not max() non collection value with given key', function () { + $queryEngine = get_query_engine_instance(); + + $queryEngine->collect([7, 3, 6, 2, 5, 1, 4]); + + $queryEngine->max('age'); + })->throws(\Nahid\QArray\Exceptions\InvalidArgumentException::class); + + it('can not max() collection of value without any given key', function () { + $queryEngine = get_query_engine_instance(); + $mockData = get_mock_data(); + + $queryEngine->collect($mockData); + + $queryEngine->max(); + })->throws(\Nahid\QArray\Exceptions\KeyNotPresentException::class); +}); + +describe('min()', function () { + it('can min() the collection data', function () { + $queryEngine = get_query_engine_instance(); + $mockData = get_mock_data(); + + $queryEngine->collect($mockData); + + $result = $queryEngine->min('age'); + expect($result)->toBe(20); + }); + + it('can min() the collection data of querying results', function () { + $queryEngine = get_query_engine_instance(); + $mockData = get_mock_data(); + + $queryEngine->collect($mockData); + + $result = $queryEngine->where('age', '>', 30)->min('age'); + expect($result)->toBe(31); + }); + + it('can min() the sets of value', function () { + $queryEngine = get_query_engine_instance(); + $mockData = get_mock_data(); + + $queryEngine->collect([7, 3, 6, 2, 5, 1, 4]); + + $result = $queryEngine->min(); + expect($result)->toBe(1); + }); + + it('can not min() non collection value with given key', function () { + $queryEngine = get_query_engine_instance(); + + $queryEngine->collect([7, 3, 6, 2, 5, 1, 4]); + + $queryEngine->min('age'); + })->throws(\Nahid\QArray\Exceptions\InvalidArgumentException::class); + + it('can not min() collection of value without any given key', function () { + $queryEngine = get_query_engine_instance(); + $mockData = get_mock_data(); + + $queryEngine->collect($mockData); + + $queryEngine->min(); + })->throws(\Nahid\QArray\Exceptions\KeyNotPresentException::class); + +}); + +describe('avg()', function () { + it('can avg() the collection data', function () { + $queryEngine = get_query_engine_instance(); + $mockData = get_mock_data(); + + $queryEngine->collect($mockData); + + $result = $queryEngine->avg('age'); + expect($result)->toBe(28); + }); + + it('can avg() the collection data of querying results', function () { + $queryEngine = get_query_engine_instance(); + $mockData = get_mock_data(); + + $queryEngine->collect($mockData); + + $result = $queryEngine->where('age', '>', 30)->avg('age'); + expect($result)->toBe(34); + }); + + it('can avg() the sets of value', function () { + $queryEngine = get_query_engine_instance(); + $mockData = get_mock_data(); + + $queryEngine->collect([7, 3, 6, 2, 5, 1, 4]); + + $result = $queryEngine->avg(); + expect($result)->toBe(4); + }); + + it('can not avg() non collection value with given key', function () { + $queryEngine = get_query_engine_instance(); + + $queryEngine->collect([7, 3, 6, 2, 5, 1, 4]); + + $queryEngine->avg('age'); + })->throws(\Nahid\QArray\Exceptions\InvalidArgumentException::class); + + it('can not avg() collection of value without any given key', function () { + $queryEngine = get_query_engine_instance(); + $mockData = get_mock_data(); + + $queryEngine->collect($mockData); + + $queryEngine->avg(); + })->throws(\Nahid\QArray\Exceptions\KeyNotPresentException::class); +}); + +describe('first()', function () { + it('can first() fetch the first row of the collection data', function () { + $queryEngine = get_query_engine_instance(); + $mockData = get_mock_data(); + + $queryEngine->collect($mockData); + + $result = $queryEngine->first(); + expect($result)->toMatchArray(['id' => 1, 'name' => 'foo']); + }); + + it('can first() fetch the first row of the collection data with query results', function () { + $queryEngine = get_query_engine_instance(); + $mockData = get_mock_data(); + + $queryEngine->collect($mockData); + + $result = $queryEngine->where('age', '>', 30)->first(); + expect($result)->toMatchArray(['id' => 4, 'name' => 'qux']); + }); + + it('can first() fetch the first row of the collection data with query results and specific columns', function () { + $queryEngine = get_query_engine_instance(); + $mockData = get_mock_data(); + + $queryEngine->collect($mockData); + + $result = $queryEngine->where('age', '>', 30)->first(['name']); + expect($result)->toMatchArray(['name' => 'qux']) + ->and($result)->not->toHaveKey('id'); + }); +}); + +describe('last()', function () { + it('can last() fetch the last row of the collection data', function () { + $queryEngine = get_query_engine_instance(); + $mockData = get_mock_data(); + + $queryEngine->collect($mockData); + + $result = $queryEngine->last(); + expect($result)->toMatchArray(['id' => 20, 'name' => 'waldofoo']); + }); + + it('can last() fetch the last row of the collection data with query results', function () { + $queryEngine = get_query_engine_instance(); + $mockData = get_mock_data(); + + $queryEngine->collect($mockData); + + $result = $queryEngine->where('age', '<', 30)->last(); + expect($result)->toMatchArray(['id' => 19, 'name' => 'graultgarply']); + }); + + it('can last() fetch the last row of the collection data with query results and specific columns', function () { + $queryEngine = get_query_engine_instance(); + $mockData = get_mock_data(); + + $queryEngine->collect($mockData); + + $result = $queryEngine->where('age', '<', 30)->last(['name']); + expect($result)->toMatchArray(['name' => 'graultgarply']) + ->and($result)->not->toHaveKey('id'); + }); +}); + + +describe('nth()', function () { + it('can nth() fetch the nth position of row from the collection data', function () { + $queryEngine = get_query_engine_instance(); + $mockData = get_mock_data(); + + $queryEngine->collect($mockData); + + $result = $queryEngine->nth(3); + expect($result)->toMatchArray(['id' => 3, 'name' => 'baz']); + }); + + + it('can nth() fetch the nth position of row from the collection data with query results', function () { + $queryEngine = get_query_engine_instance(); + $mockData = get_mock_data(); + + $queryEngine->collect($mockData); + + $result = $queryEngine->where('age', '>', 30)->nth(2); + expect($result)->toMatchArray(['id' => 10, 'name' => 'fred']); + }); + + it('can nth() fetch the last nth position of the collection data with query results and specific columns', function () { + $queryEngine = get_query_engine_instance(); + $mockData = get_mock_data(); + + $queryEngine->collect($mockData); + + $result = $queryEngine->where('age', '>', 30)->nth(2, ['name']); + expect($result)->toMatchArray(['name' => 'fred']) + ->and($result)->not->toHaveKey('id'); + }); + + it('can nth() fetch the null value from the position which is greater than total items', function () { + $queryEngine = get_query_engine_instance(); + $mockData = get_mock_data(); + + $queryEngine->collect($mockData); + + $result = $queryEngine->nth(21); + expect($result)->toBeNull(); + }); + +}); + +it('can sortBy the collection data with specific property', function () { + $queryEngine = get_query_engine_instance(); + $mockData = get_mock_data(); + + $queryEngine->collect($mockData); + + $result = $queryEngine->sortBy('age'); + expect($result->raw())->toHaveCount(20) + ->and($result->raw()[0])->toMatchArray(['id' => 1, 'name' => 'foo']) + ->and($result->raw()[19])->toMatchArray(['id' => 15, 'name' => 'barbaz']); + + $queryEngine->reset(); + + $result = $queryEngine->collect($mockData)->sortBy('age', 'desc'); + + expect($result->raw())->toHaveCount(20) + ->and($result->raw()[0])->toMatchArray(['id' => 15, 'name' => 'barbaz']) + ->and($result->raw()[19])->toMatchArray(['id' => 1, 'name' => 'foo']); +}); + +it('can sort() the data', function () { + $queryEngine = get_query_engine_instance(); + $mockData = get_mock_data(); + + $queryEngine->collect($mockData); + + $result = $queryEngine->sort(); + expect($result->raw())->toHaveCount(20) + ->and($result->raw()[0])->toMatchArray(['id' => 1, 'name' => 'foo']) + ->and($result->raw()[19])->toMatchArray(['id' => 20, 'name' => 'waldofoo']); + + $queryEngine->reset(); + + $result = $queryEngine->sort('desc'); + + expect($result->raw())->toHaveCount(20) + ->and($result->raw()[0])->toMatchArray(['id' => 20, 'name' => 'waldofoo']) + ->and($result->raw()[19])->toMatchArray(['id' => 1, 'name' => 'foo']); +}); + +it('can grab() the raw resultant data', function () { + $queryEngine = get_query_engine_instance(); + $mockData = get_mock_data(); + + $queryEngine->collect($mockData); + + $result = $queryEngine->where('id', 2)->first()->grab('meta.foo'); + expect($result)->toBe('baz'); +}); + +describe('each()', function() { + it('can each() iterate over all items in the collection', function () { + $queryEngine = get_query_engine_instance(); + $mockData = get_mock_data(); + $queryEngine->collect($mockData); + + $result = []; + $queryEngine->where('id', '<=', 3) + ->each(function($val, $key) use (&$result) { + $result[] = $val['name']; + }); + + expect($result)->toHaveCount(3) + ->and($result)->toMatchArray([ + 'foo', + 'bar', + 'baz', + ]); + }); + + it('can each() handle an empty collection', function () { + $queryEngine = get_query_engine_instance(); + $queryEngine->collect([]); + + $result = []; + $queryEngine->each(function($val, $key) use (&$result) { + $result[] = $val; + }); + + expect($result)->toBeEmpty(); + }); +}); + +it('can transform() the data with a callable function', function () { + $queryEngine = get_query_engine_instance(); + $queryEngine->collect([ + ['id' => 1, 'name' => 'foo'], + ['id' => 2, 'name' => 'bar'], + ]); + + $result = $queryEngine->transform(function ($val) { + $val['name'] = strtoupper($val['name']); + return $val; + }); + + expect($result->raw())->toMatchArray([ + ['id' => 1, 'name' => 'FOO'], + ['id' => 2, 'name' => 'BAR'], + ]); +}); + +it('can map() the data with a callable function', function () { + $queryEngine = get_query_engine_instance(); + $queryEngine->collect([ + ['id' => 1, 'name' => 'foo'], + ['id' => 2, 'name' => 'bar'], + ]); + + $result = $queryEngine->map(function ($key, $val) { + return ['new_id' => $val['id'], 'new_name' => strtoupper($val['name'])]; + }); + + expect($result->raw())->toMatchArray([ + ['new_id' => 1, 'new_name' => 'FOO'], + ['new_id' => 2, 'new_name' => 'BAR'], + ]); +}); + +describe('filter()', function() { + it('can filter() the data with a callable function', function () { + $queryEngine = get_query_engine_instance(); + $queryEngine->collect(get_mock_data()); + + $result = $queryEngine->filter(function ($val) { + return $val['id'] <= 3; + }); + + + expect($result->raw())->toHaveCount(3) + ->and($result->raw()[0])->toMatchArray(['id' => 1, 'name' => 'foo']); + }); + + it('can filter() the data with a callable function and keep indexes', function () { + $queryEngine = get_query_engine_instance(); + $queryEngine->collect(get_mock_data()); + + $result = $queryEngine->filter(function ($val) { + return $val['id'] >= 16 && $val['id'] % 2 === 0; + }, true); + + + expect($result->raw())->toHaveCount(3) + ->and(array_keys($result->raw()))->toMatchArray([15, 17, 19]); + }); +}); + +describe('implode()', function () { + it('can implode() from collection data by given key as string', function() { + $queryEngine = get_query_engine_instance(); + $queryEngine->collect(get_mock_data()); + + $result = $queryEngine->implode('name', ', '); + $data = $result->raw(); + + expect($data)->toHaveKey('name') + ->and($data['name'])->toBeString() + ->and($data)->toHaveCount(1) + ->and($data['name'])->toBe('foo, bar, baz, qux, quux, corge, grault, garply, waldo, fred, plugh, xyzzy, thud, foobar, barbaz, bazqux, quuxquuz, corgegrault, graultgarply, waldofoo'); + }); + + it('can implode() from collection data by given keys as array', function() { + $queryEngine = get_query_engine_instance(); + $queryEngine->collect(get_mock_data()); + + $result = $queryEngine->implode(['name', 'age'], ', '); + $data = $result->raw(); + + expect($data)->toHaveKeys(['name', 'age']) + ->and($data)->toHaveCount(2) + ->and($data['age'])->toBe('20, 25, 30, 35, 22, 28, 26, 21, 27, 33, 29, 31, 34, 23, 37, 24, 32, 25, 22, 36'); + }); +}); + +describe('column()', function () { + it('can column() get specific key\'s value from collection', function () { + $queryEngine = get_query_engine_instance(); + $queryEngine->collect(get_mock_data()); + + $result = $queryEngine->column('name'); + expect($result->raw())->toHaveCount(20) + ->and($result->raw()[0])->toBe('foo') + ->and($result->raw()[19])->toBe('waldofoo'); + }); + + it('can column() get specific key\'s value from collection using given key', function () { + $queryEngine = get_query_engine_instance(); + $queryEngine->collect(get_mock_data()); + + $result = $queryEngine->column('age', 'name'); + expect($result->raw())->toHaveCount(20) + ->and($result->raw()['foo'])->toBe(20) + ->and($result->raw()['waldofoo'])->toBe(36); + }); + +}); + +it('can toJson() of the collection data', function () { + $queryEngine = get_query_engine_instance(); + $queryEngine->collect(get_mock_data()); + + $result = $queryEngine->toJson(); + expect($result)->toBeString() + ->and($result)->toContain('foo') + ->and($result)->toContain('waldofoo'); +}); + +it('can toArray() of the collection data', function () { + $queryEngine = get_query_engine_instance(); + $queryEngine->collect(get_mock_data()); + + $result = $queryEngine->toArray(); + expect($result)->toBeArray() + ->and($result)->toHaveCount(20) + ->and($result[0])->toMatchArray(['id' => 1, 'name' => 'foo']) + ->and($result[19])->toMatchArray(['id' => 20, 'name' => 'waldofoo']); +}); + +it('can get all keys() from the collection data', function () { + $queryEngine = get_query_engine_instance(); + $queryEngine->collect(get_mock_data()); + + $result = $queryEngine->keys(); + + expect($result->raw())->toBeArray() + ->and($result)->toHaveCount(20) + ->and($result[0])->toBe(0) + ->and($result[19])->toBe(19); +}); + +it('can get all values() from the collection data', function () { + $queryEngine = get_query_engine_instance(); + $queryEngine->collect(get_mock_data()); + + $result = $queryEngine->values(); + + expect($result->raw())->toBeArray() + ->and($result)->toHaveCount(20) + ->and($result[0])->toMatchArray(['id' => 1, 'name' => 'foo']) + ->and($result[19])->toMatchArray(['id' => 20, 'name' => 'waldofoo']); +}); + +describe('chunk()', function () { + it('can chunk() the collection data by given amount', function () { + $queryEngine = get_query_engine_instance(); + $queryEngine->collect(get_mock_data()); + + $result = $queryEngine->chunk(5); + expect($result->raw())->toHaveCount(4) + ->and($result->raw()[0])->toHaveCount(5) + ->and($result->raw()[3])->toHaveCount(5); + }); + + it('can chunk() the collection data by given amount and process it with callback', function () { + $queryEngine = get_query_engine_instance(); + $queryEngine->collect(get_mock_data()); + + $result = []; + $output = $queryEngine->chunk(5, function(QueryEngine $items) use (&$result) { + $result[] = $items->count(); + }); + + expect($result)->toHaveCount(4) + ->and($result[0])->toBe(5) + ->and($result[3])->toBe(5) + ->and($output)->toBeNull(); + }); +}); + +it('can pop() the first elements from collection', function () { + $queryEngine = get_query_engine_instance(); + $queryEngine->collect(get_mock_data()); + + $result = $queryEngine->pop(); + expect($result->raw())->toMatchArray(['id' => 20, 'name' => 'waldofoo']) + ->and($queryEngine->raw())->toHaveCount(19); +}); + +it('can shift() the first elements from collection', function () { + $queryEngine = get_query_engine_instance(); + $queryEngine->collect(get_mock_data()); + + $result = $queryEngine->shift(); + expect($result->raw())->toMatchArray(['id' => 1, 'name' => 'foo']) + ->and($queryEngine->raw())->toHaveCount(19); +}); + +it('can push() the elements to the collection', function () { + $queryEngine = get_query_engine_instance(); + $queryEngine->collect(get_mock_data()); + + $queryEngine->push(['id' => 21, 'name' => 'pushbar']); + $result = $queryEngine->raw(); + + expect($result)->toHaveCount(21) + ->and($result[20])->toMatchArray(['id' => 21, 'name' => 'pushbar']); +}); diff --git a/tests/TestCase.php b/tests/TestCase.php deleted file mode 100644 index d9aa266..0000000 --- a/tests/TestCase.php +++ /dev/null @@ -1,24 +0,0 @@ - + */ +function get_mock_data(): array +{ + return [ + ['id' => 1, 'name' => 'foo', 'age' => 20, 'is_active' => true, 'deleted_at' => null, 'created_at' => '2021-01-01 00:00:00', 'meta' => ['foo' => 'bar', 'baz' => 'qux']], + ['id' => 2, 'name' => 'bar', 'age' => 25, 'is_active' => true, 'deleted_at' => null, 'created_at' => '2021-01-02 00:00:00', 'meta' => ['foo' => 'baz', 'baz' => 'quux']], + ['id' => 3, 'name' => 'baz', 'age' => 30, 'is_active' => false, 'deleted_at' => null, 'created_at' => '2021-01-03 00:00:00', 'meta' => ['foo' => 'quux', 'baz' => 'foo']], + ['id' => 4, 'name' => 'qux', 'age' => 35, 'is_active' => true, 'deleted_at' => '2023-01-01 00:00:00', 'created_at' => '2021-01-04 00:00:00', 'meta' => ['foo' => 'bar', 'baz' => 'baz']], + ['id' => 5, 'name' => 'quux', 'age' => 22, 'is_active' => false, 'deleted_at' => '2023-01-01 00:00:00', 'created_at' => '2021-01-05 00:00:00', 'meta' => ['foo' => 'baz', 'baz' => 'quux']], + ['id' => 6, 'name' => 'corge', 'age' => 28, 'is_active' => true, 'deleted_at' => null, 'created_at' => '2021-01-06 00:00:00', 'meta' => ['foo' => 'qux', 'baz' => 'bar']], + ['id' => 7, 'name' => 'grault', 'age' => 26, 'is_active' => true, 'deleted_at' => null, 'created_at' => '2021-01-07 00:00:00', 'meta' => ['foo' => 'bar', 'baz' => 'baz']], + ['id' => 8, 'name' => 'garply', 'age' => 21, 'is_active' => true, 'deleted_at' => null, 'created_at' => '2021-01-08 00:00:00', 'meta' => ['foo' => 'quux', 'baz' => 'foo']], + ['id' => 9, 'name' => 'waldo', 'age' => 27, 'is_active' => true, 'deleted_at' => '2023-01-15 00:00:00', 'created_at' => '2021-01-09 00:00:00', 'meta' => ['foo' => 'baz', 'baz' => 'qux']], + ['id' => 10, 'name' => 'fred', 'age' => 33, 'is_active' => true, 'deleted_at' => null, 'created_at' => '2021-01-10 00:00:00', 'meta' => ['foo' => 'bar', 'baz' => 'quux']], + ['id' => 11, 'name' => 'plugh', 'age' => 29, 'is_active' => true, 'deleted_at' => null, 'created_at' => '2021-01-11 00:00:00', 'meta' => ['foo' => 'qux', 'baz' => 'foo']], + ['id' => 12, 'name' => 'xyzzy', 'age' => 31, 'is_active' => false, 'deleted_at' => null, 'created_at' => '2021-01-12 00:00:00', 'meta' => ['foo' => 'baz', 'baz' => 'quux']], + ['id' => 13, 'name' => 'thud', 'age' => 34, 'is_active' => true, 'deleted_at' => '2023-02-01 00:00:00', 'created_at' => '2021-01-13 00:00:00', 'meta' => ['foo' => 'quux', 'baz' => 'bar']], + ['id' => 14, 'name' => 'foobar', 'age' => 23, 'is_active' => true, 'deleted_at' => null, 'created_at' => '2021-01-14 00:00:00', 'meta' => ['foo' => 'bar', 'baz' => 'quux']], + ['id' => 15, 'name' => 'barbaz', 'age' => 37, 'is_active' => false, 'deleted_at' => null, 'created_at' => '2021-01-15 00:00:00', 'meta' => ['foo' => 'qux', 'baz' => 'foo']], + ['id' => 16, 'name' => 'bazqux', 'age' => 24, 'is_active' => true, 'deleted_at' => null, 'created_at' => '2021-01-16 00:00:00', 'meta' => ['foo' => 'baz', 'baz' => 'quux']], + ['id' => 17, 'name' => 'quuxquuz', 'age' => 32, 'is_active' => true, 'deleted_at' => '2023-03-01 00:00:00', 'created_at' => '2021-01-17 00:00:00', 'meta' => ['foo' => 'quux', 'baz' => 'baz']], + ['id' => 18, 'name' => 'corgegrault', 'age' => 25, 'is_active' => true, 'deleted_at' => null, 'created_at' => '2021-01-18 00:00:00', 'meta' => ['foo' => 'bar', 'baz' => 'qux']], + ['id' => 19, 'name' => 'graultgarply', 'age' => 22, 'is_active' => false, 'deleted_at' => null, 'created_at' => '2021-01-19 00:00:00', 'meta' => ['foo' => 'qux', 'baz' => 'bar']], + ['id' => 20, 'name' => 'waldofoo', 'age' => 36, 'is_active' => true, 'deleted_at' => '2023-04-01 00:00:00', 'created_at' => '2021-01-20 00:00:00', 'meta' => ['foo' => 'baz', 'baz' => 'foo']], + ]; +} + + +